2014-02-06 3 views
0

В поле FULLTEXT с индексом, содержащим слово ddi. Теперь я ищу это слово с помощью MATCH() функции, как показано ниже, но она возвращается 0 записи:MySQL: поиск по полнотекстовому индексу с использованием MATCH и INSTR

SELECT * FROM `tbl_xxx` 
WHERE MATCH(`full_content`) AGAINST ('ddi' IN NATURAL LANGUAGE MODE); 
-- RETURNING 0 RECORDS :(

Но когда я в поиск с помощью Instr() функции, то она возвращает 1 запись

SELECT * FROM `tbl_xxx` 
WHERE INSTR(`full_content`, 'ddi') 
-- RETURNS 1 RECORD :) 

Зачем использовать INSTR(), возвращая 1 запись, но не с MATCH().

Таблица tbl_xxx имеет тип двигателя = MyISAM и поле full_content индексируется с помощью FULLTEXT

ответ

0

Существует минимальная длина слова для полнотекстового поиска функции в MySQL. Скорее всего, у вас установлено значение больше трех. Вы можете настроить его в файле my.cnf так:

[mysqld] 
ft_min_word_len=3 

Для получения дополнительной информации ознакомьтесь с MySQL manual.

+0

Добавлен 'ft_min_word_len = 3' в my.cnf и перезапущен MySQL, но по-прежнему получает 0 записей для поиска FULLTEXT! – vinaykrsharma

+0

Если вы используете «SHOW VARIABLES LIKE 'ft_%'", каковы результаты? –

+0

Да видел это: 'ft_boolean_syntax + -><() ~ *: "" & |' ' ft_max_word_len 84' ' ft_min_word_len 3' 'ft_query_expansion_limit 20' ' ft_stopword_file (встроенный) ' – vinaykrsharma

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