Результаты отсутствуют в поиске в логическом режиме 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 игнорирует слова, содержащие меньше символов. Это контролируется параметром. Это объясняется более подробно здесь.
Похоже, вы захотите изменить список стоп-слов, изменить минимальную длину слова и перестроить индекс.