Я пытаюсь использовать индекс FULLTEXT, чтобы облегчить поиск сообщений на форуме. Это не работает так, как я ожидаю, и я пытаюсь понять, почему нет.Результаты, отсутствующие в поиске в булевом режиме mysql 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);
также не дает результатов.
Что может быть?
А, да, я ожидаю, что стоп-слова будут моим камнем преткновения (и для поиска в форуме я действительно не должен использовать какие-либо стоп-слова, которые я думаю ...). Будет ли минимальная длина слова играть какую-либо роль в цитируемой фразе? (поисковая фраза каждого запроса была длиннее 4 символов) – Mala
@Mala. , , В примере в вашем вопросе единственным словом, которое будет использоваться для поиска (по умолчанию), является «ха-ха». Все остальные - слова остановки, менее четырех символов или оба. –
, чтобы убедиться, что я понимаю - вы говорите, что невозможно найти точную строку «a b c d e f g», не уменьшая длину минимального слова до 1 символа, потому что каждое составное слово в цитируемой строке имеет длину всего 1 символ? – Mala