2009-12-23 3 views
2

Я пытаюсь добавить индекс полного текста к таблице, но он, похоже, не применяется.Почему индекс FULLTEXT не заполняется - MYSQL

ADD FULLTEXT `genre` (
`genre` 
) 

запрос выполняется, но мощность остается только 1 (даже если я ahve несколько тысяч записей)

Я попытался ПРОАНАЛИЗИРУЙТЕ, ремонт и ни казалось, для обновления индекса. Если я создаю обычный индекс, мощность будет немедленно обновлена.

Отбор по индексу возвращает пустой набор, хотя я знаю совпадения.

ответ

2

Число элементов в базе данных не имеет смысла для индексов FULLTEXT, поскольку на одну запись можно ссылаться на несколько клавиш (по одной клавише на слово).

FULLTEXT индекс всегда будет использоваться для запроса, если это применимо на всех:

SELECT * 
FROM genre 
WHERE MATCH(genre) AGAINST ('mystring') 

индекс, однако, не будет индексировать слова менее ft_min_word_len символов (который 4 по умолчанию), и, следовательно, запрос не будет соответствовать им.

Не могли бы вы разместить запрос, который, по вашему мнению, должен работать, но это не так?

+0

Бинго. В моей соответствующей строке было всего три слова. Я просто переключился на использование LIKE в INDEX, и разница в производительности незначительна. Спасибо! – Eddie

+0

'@ Eddie': вы также можете изменить' ft_min_word_len' в настройках 'MySQL'. – Quassnoi

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