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. Полнотекстовые стоп-слова

Другие вопросы по тегам