MySQL полный текст возвращает ноль результатов, хотя точная поисковая фраза существует в таблице - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть таблица с именем myatts:

  • Имеет около 3332834 строк данных.
  • Я обычно ищу в столбце "содержание"
  • У меня около 40 строк, где содержание = Rat, D.D.

Однако, когда я выполняю полнотекстовый поиск, я не получаю результатов. Но если я использую LIKE, я получаю результаты.
Я хочу придерживаться полного текста, может кто-нибудь помочь мне понять, почему не возвращаются результаты?

Вот моя структура таблицы:

id  
int(11) Not null AUTO_INCREMENT

join_id     
int(11) Not Null

webid
int(11) Not Null 

content
text utf8_general_ci

Вот мои индексы

Keyname Type      Unique Packed      Field      Cardinality
PRIMARY BTREE     Yes    No      id             3332834     
content BTREE     No     No      content (333)  238059          
id_index    BTREE     No     No      webid      151492          
join_id BTREE     No     No      join_id        36          
content_ft  FULLTEXT  No     No      content        119029

Вот мой запрос:

SELECT * FROM myatts WHERE MATCH(content) AGAINST('Rat, D.D.' IN BOOLEAN MODE)

Вот объяснение:

1   SIMPLE  myatts  fulltext    content_ft  content_ft  0       1   Using where

Любая помощь / указатели были бы великолепны. Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

По умолчанию полнотекстовый индексатор MySQL игнорирует слова длиной менее 4 символов. В вашем my.cnf установите эту переменную:

ft_min_word_len=3

Возможно, вы не хотите идти меньше 3, потому что в итоге вы получите ложные срабатывания.

0 голосов
/ 01 сентября 2011

Минимальная длина слова, вероятно, установлена ​​на 4. Подробнее см. Руководство по MySQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...