Результаты отсутствуют в поиске в логическом режиме mysql FULLTEXT

Я пытаюсь использовать индекс FULLTEXT для облегчения поиска сообщений на форуме. Это не работает так, как я ожидаю, и я пытаюсь понять, почему нет.

Например, я знаю, что есть только один пост, который содержит фразу "haha and i got three"поэтому я выполняю запрос

select * from forum_posts where
match(message) against ('"haha and i got three"' in boolean mode);

и, как я ожидаю, я нахожу единственный пост, который включает эту фразу. Ура!

Но затем я выполняю соответствующий запрос:

select * from forum_posts where
match(message) against ('"and i got three"' in boolean mode);

и не получить результатов. На самом деле, просто ищем слово "три":

select * from forum_posts where
match(message) against ('three' in boolean mode);

результатов тоже не дает.

Что может происходить?

1 ответ

Решение

Я думаю, вам нужно узнать о стоп-словах и минимальной длине слова.

По умолчанию MySQL игнорирует стоп-слова в полнотекстовом индексе. Here это список их. "А у меня три" - это все стоп-слова.

Кроме того, по умолчанию MySQL игнорирует слова, содержащие меньше символов. Это контролируется параметром. Это объясняется более подробно здесь.

Похоже, вы захотите изменить список стоп-слов, изменить минимальную длину слова и перестроить индекс.

Другие вопросы по тегам