MySQL: MATCH AGAINST не показывает все результаты - PullRequest
0 голосов
/ 02 марта 2012

У меня странная проблема - я использую 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 Ответ

1 голос
/ 03 марта 2012

Нашел нарушителя спокойствия:
Это было из-за списка стоп-слов. Отключение списка путем добавления следующей строки в my.cnf решило проблему:
ft_stopword_file = ''

Более подробную информацию вы можете найти по ссылкам ниже:
MySQL: 11.9.6. Тонкая настройка полнотекстового поиска MySQL
MySQL: 11.9.4. Полнотекстовые стоп-слова

...