[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не срабатывает полнотекстовый поиск
McLotos
Hello world!
Вожусь с проблемой поиска по БД. Есть таблица
`ff_parts` (
`id` int(11) NOT NULL auto_increment,
`visibility` set('1','0') collate utf8_unicode_ci NOT NULL default '1',
`model` varchar(50) collate utf8_unicode_ci NOT NULL,
`price` int(11) NOT NULL,
`category` set('interior','exterior','security','tires-and-wheels','accessories','chemistry') character set cp1251 NOT NULL,
`base_photo` text collate utf8_unicode_ci NOT NULL,
`photos` text collate utf8_unicode_ci NOT NULL,
`dop` text collate utf8_unicode_ci NOT NULL,
`name` text collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `model` (`model`)
)

ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=24 ;

Нужно выбрать все записи где в поле model есть Nissan
Спрашиваю
SELECT * FROM `ff_parts` WHERE MATCH (model) AGAINST ('Nissan');

А в ответ тишина

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
inpost
McLotos
А где полнотекстовый индекс? Почему в model у тебя несколько значений сразу?! mad.gif
Или ты не знаешь, что такое полнотекстовый поиск?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
McLotos
Цитата (inpost @ 26.02.2015 - 20:10)
Или ты не знаешь, что такое полнотекстовый поиск?

Никогда не делал.
тут прочитал
http://habrahabr.ru/post/40218/

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
GET
Цитата
тут прочитал
http://habrahabr.ru/post/40218/


Считаю пора забанить этот ресурс! laugh.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
McLotos
Цитата (GET @ 26.02.2015 - 20:27)
Считаю пора забанить этот ресурс!

а по делу? wink.gif

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
inpost
McLotos
Почитай учебник какой-нибудь сначала.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
McLotos
inpost
Возникает желание послать этот полнотекстовый поиск и разделить поле model на Brand и Model, один хрен искать будут либо по марке, либо по марке и модели.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Valick
McLotos, лучше бы всё-таки возникало желание почитать
и не на хабре, а где-нить на менее распальцованном ресурсе http://www.mysql.ru/docs/man/Fulltext_Search.html

особенно вот это
Цитата
Следующий пример - более сложный. Запрос возвращает значение релевантности и, кроме того, сортирует строки в порядке убывания релевантности. Чтобы получить такой результат, необходимо указать MATCH() дважды. Это не приведет к дополнительным издержкам, так как оптимизатор MySQL учтет, что эти два вызова MATCH() идентичны, и запустит код полнотекстового поиска только однажды.

mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root') AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root');


и вот это
Цитата
Описанная техника подсчета лучше всего работает для больших наборов текстов (фактически она именно для этого тщательно настраивалась). Для очень малых таблиц распределение слов не отражает адекватно их смысловое значение, и данная модель иногда может выдавать некорректные результаты.

грубо говоря на таблице из трёх строк, запрос вернёт вам дырку от бублика
___
а еще лучше прочитать всё от начала до конца

_____________
Стимулятор ~yoomoney - 41001303250491
McLotos
Цитата (Valick @ 26.02.2015 - 23:26)
грубо говоря на таблице из трёх строк, запрос вернёт вам дырку от бублика

Ну что поделаешь, будем юзать старый добрый лайк =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Valick
Цитата (McLotos @ 27.02.2015 - 11:30)
Ну что поделаешь, будем юзать старый добрый лайк

То что старый это верно, а вот то что добрый (в данном контексте) вы сильно заблуждаетесь.
Добрый он только тогда когда используют его по назначению. К тому же как вы собираетесь рассчитывать релевантность?
Если собираетесь хранить таблицу из трёх строк, да еще и геморроится с лайком, может следует вообще отказаться от использования БД?

_____________
Стимулятор ~yoomoney - 41001303250491
McLotos
LIKE %NISSAN%

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
ЗлОй ПрОграММер
McLotos
Если слово Nissan встречается часто то полнотекстный поиск его игнорирует, считает за слово паразит, используй IN BOOLEAN MODE
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.