2010-09-26 3 views
2

Я пытаюсь следовать: http://dev.mysql.com/doc/refman/4.1/en/fulltext-natural-language.htmlMySQL полнотекстового MATCH, против возвращения 0 результатов

в попытке улучшить поисковые запросы, как в скорости и возможность заказа по баллам.

Однако при использовании этого SQL («skitt» используется как поисковый запрос, так что я могу попробовать выполнить Skittles).

SELECT 
    id,name,description,price,image, 
    MATCH (name,description) 
    AGAINST ('skitt') 
    AS score 
FROM 
    products 
WHERE 
    MATCH (name,description) 
AGAINST ('skitt') 

он возвращает 0 результатов. Я пытаюсь выяснить, почему, я думаю, я мог бы установить свой индекс неправильно, я не уверен, это первый раз, когда я отклонился от LIKE!

Вот моя структура таблицы и данные:

alt text

Спасибо!

ответ

5

По умолчанию определенные слова исключены из поиска. Они называются stopwords. «a» - пример остановки. Вы можете проверить запрос, используя слово, которое не является стоп-слов, или вы можете отключить стоп-слова:

Если вы хотите, чтобы также соответствовать префиксы использовать truncation operator in boolean mode:

*

Звездочка служит оператором усечения (или подстановки). В отличие от других операторов, он должен быть добавлен к слову, который будет затронут. Слова совпадают, если они начинаются со слова, предшествующего оператору *.

+0

, даже если я заменил «a» на «skitt» (чтобы соответствовать Skittles) он все равно возвращает 0 – Titan

+0

@Alex Crooks: Почему вы ожидаете «skitt», чтобы соответствовать «Skittles»? Это не одно и то же слово. –

+0

Ах, ну, так что я полный идиот, я думал, что это тоже частичное совпадение слов, если я изменю его на «кегли», это работает, и я так и хочу. Спасибо и жаль, что тратили ваше время :) – Titan

Смежные вопросы