FULLTEXT search + `слово`

Sync

Новичок
FULLTEXT search + `слово`

В полнотекстовом поиске MySQL 'cловом' является любая последовательность символов, состоящая из букв, чисел, знаков ` и _. Любое 'слово', присутствующее в стоп-списке (stopword) или просто слишком короткое (3 символа или меньше), игнорируется.

Есть каталог товаров на сайте (сейчас более 10000 позиций, планируется в разы больше), сделан FULLTEXT индекс на title, desription. Но как поступать, например, при поиске строки iRiver iFP-799? Ищу в логическом режиме.
В данном случае iFP и 799 это стоп-слова (по 3 символа), причем 799 как бы с минусом, то есть должно быть исключено из поиска.
Есть ли способ как то экранировать эти операторы? Что-то типа \- не помогает.

Или пользоваться LIKE в моей ситуации? typeof (description) = TEXT.
 

Апельсин

Оранжевое создание
операторы экранировать нельзя.
Длину поисковых слов можно уменьшить при помощи ft_min_word_len или как-то так. И перестроить индекс после этого.
 

vonica

Новичок
Я думаю в таком случае iRiver iFP-799 в базе и другие подобности лучше менять на iRiver iFP_799,

И данные с поисковой строки тоже обрабатывать (заменять все - на _)
 

denver

?>Скриптер
Любое 'слово', присутствующее в стоп-списке (stopword) или просто слишком короткое (3 символа или меньше), игнорируется.
Ну да. После этого ну очень удобно искать товары "Olympus Mju", "Sony Duo", "mp3 плеер" и т.п.
Я уже молчу про Transcend T.Sonic и другие извращения в названиях...

А по теме, в гугле например решили (и более разумно) что перед минусом должен стоять пробел, а иначе это не минус, а просто дефис - часть слова.
 

Orgishe

Новичок
на 10 тыс LIKE %слово% предпочтительнее в таком случае, уж очень много 2х, 3х символьных слов в маркировках. У меня был такой же трабл на 4-5 млн записях - пришлось просить админа уменьшать длину стоп-слов - поиск по LIKE (особенно с первым %) просто вешался.
 
Сверху