MySQL: MATCH AGAINST не показывает все результаты
У меня странная проблема - я использую MySQL 5.1 и таблицу с Fulltable-Index. В конфиге mysql ft_min_word_len
имеет значение 2 (поэтому индексируются слова длиной не менее двух символов).
Приведенные ниже запросы упрощены, но имеют тот же эффект, что и исходный.
Когда я ищу:
SELECT company FROM my_table WHERE MATCH (company) AGAINST ('intern*' IN BOOLEAN MODE)
Я получаю компании с именем "internat"- например, "International Inc.", "Internship.org".
Однако, когда я ищу:
SELECT company FROM my_table WHERE MATCH (company) AGAINST ('just*' IN BOOLEAN MODE)
Я не получил никакого результата, хотя в таблице "Справедливость и путешествия" есть запись.
Но когда я ищу:
SELECT company FROM my_table WHERE MATCH (company) AGAINST ('travelling*' IN BOOLEAN MODE)
Я получаю "Справедливость и Путешествия"- Вступление / правильный результат.
И если я буду искать с LIKE %just%
вместо MATCH-AGAINST
Я также получаю правильные результаты.
У кого-нибудь есть идея, почему я не получаю правильный результат во втором упомянутом запросе?
1 ответ
Нашел нарушителя спокойствия:
Это было из-за списка стоп-слов. Отключение списка путем добавления следующей строки в my.cnf решило проблему:
ft_stopword_file = ''
Более подробную информацию вы можете найти по ссылкам ниже:
MySQL: 11.9.6. Тонкая настройка полнотекстового поиска MySQL
MySQL: 11.9.4. Полнотекстовые стоп-слова