2015-06-01 1 views
0

Я пытаюсь использовать индекс 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); 

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

Что может быть?

ответ

1

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

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

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

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

+0

А, да, я ожидаю, что стоп-слова будут моим камнем преткновения (и для поиска в форуме я действительно не должен использовать какие-либо стоп-слова, которые я думаю ...). Будет ли минимальная длина слова играть какую-либо роль в цитируемой фразе? (поисковая фраза каждого запроса была длиннее 4 символов) – Mala

+0

@Mala. , , В примере в вашем вопросе единственным словом, которое будет использоваться для поиска (по умолчанию), является «ха-ха». Все остальные - слова остановки, менее четырех символов или оба. –

+0

, чтобы убедиться, что я понимаю - вы говорите, что невозможно найти точную строку «a b c d e f g», не уменьшая длину минимального слова до 1 символа, потому что каждое составное слово в цитируемой строке имеет длину всего 1 символ? – Mala

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

  • Нет связанных вопросов^_^