Mysql MATCH возвращает 0, когда LIKE возвращает правильное количество результатов? - PullRequest
1 голос
/ 13 ноября 2011

Я использую следующий запрос:

SELECT 
  (SELECT COUNT(*) FROM blah
    WHERE MATCH(text) AGAINST ('c')
  ) as count1,
  (SELECT COUNT(*) FROM blah 
    WHERE text LIKE '% c %'
  ) as count2

Это возвращает:

count1 count2
0      19

Почему это так?

Обратите внимание, что ft_min_word_len установлен как 1 и индексыбыли восстановлены.Почему это не работает?: |

У поля бла есть такие строки, как "ychgbgpqngjfktyuawdvb excm".

1 Ответ

0 голосов
/ 13 ноября 2011

Во-первых, полнотекстовый поиск MySQL по умолчанию режим естественного языка . Вам необходимо использовать ключевое слово IN BOOLEAN MODE, чтобы переключиться на логический режим , который поддерживает оператор *.

Во-вторых, ваш полнотекстовый запрос находит записи, содержащие слово (из четырех или более букв и , отсутствующих в списке стоп-слов ) , начинающихся с письмо c. Между тем, ваш запрос LIKE находит любые записи, содержащие букву c где угодно, даже если она находится в середине слова.

...