2009-02-17 5 views
3

Я пытаюсь выполнить поиск пользователей на основе полнотекстового поиска.Почему полнотекстовый поиск строки 'FDR' не дает результатов в MySQL?

SELECT * FROM users WHERE MATCH (name) ПРОТИВ ('FDR' В РЕЖИМЕ BOOLEAN);

Однако запрос не дает никаких результатов. Я могу заменить значение поиска на другие строки и дать результаты.

Я даже попытался использовать список слов с нулевым стопом без каких-либо успехов. Проблема связана с этой конкретной строкой.

+0

Что строка в столбце имя, что вы думаете, он должен соответствовать? – jonstjohn

ответ

6

От dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

Минимальное значение по умолчанию четыре символов; максимальным значением по умолчанию является . Если вы измените значение , вы должны перестроить свои индексы FULLTEXT.

Минимальные и максимальные длины слов, которые будут индексироваться определяются системными переменными ft_min_word_len и ft_max_word_len .

Также см Server System Variables

+0

Я построил свой индекс с ft_min_word_len = 4 и впоследствии опустил его до 3. Однако я понял, что индексы FULLTEXT необходимо перестроить. Есть ли способ восстановить их, не отбрасывая и не перестраивая их? –

+0

«Для того, чтобы перестроить индексы в этом случае, достаточно, чтобы сделать быструю операцию восстановления:» MySQL> REPAIR TABLE имя_таблицы БЫСТРЫЙ;» - http://dev.mysql.com/doc/refman/5.1/ о/полнотекстовая-тонкая tuning.html –

4

Если this article по-прежнему действует, то это потому, что полнотекстовое индексирование MySQL не индексирует слова < = 3 символа.

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