Почему не работает полный текстовый индекс MySQL? - PullRequest
3 голосов
/ 01 сентября 2010

Попробовав все, что мог, я наконец создал эту тестовую таблицу:

CREATE TABLE test_table (
  id int(11) NOT NULL AUTO_INCREMENT,
  title text NOT NULL,
  PRIMARY KEY (id),
  FULLTEXT KEY title (title)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Со следующими тестовыми данными:

INSERT INTO test_table (id, title) VALUES
(1, 'Evolving intelligence bayesian filtering power behind');

Я ожидаю, что следующий запрос вернет 1 строку:

SELECT * FROM test_table WHERE MATCH (title) AGAINST ('intelligence');

Но он возвращает пустой набор.

У меня есть другая база данных в том же экземпляре mysql, где полнотекстовый поиск работает, как и ожидалось.Но для каждой новой базы данных, которую я создал, полный текст не работает.Я перестроил индексы, отремонтировал таблицы, даже проверил индекс с помощью myisam_ftdump.У меня нет идей.

У вас есть идеи по поводу этой проблемы?Заранее спасибо.

1 Ответ

10 голосов
/ 29 сентября 2010

Просто для уточнения. если в вашей таблице недостаточно данных (например, 1 строка), полнотекстовый поиск не будет работать. чтобы слова были проиндексированы, они должны появляться реже, чем в 50% строк.

Таким образом, «интеллект» встречается в 100% строк и поэтому не индексируется.

Добавьте еще как минимум 2 строки без слова «интеллект», и оно начнет работать. Это не разъясняется в документации по MySQL и часто ловит новичков. это (я тоже), потому что мы все тестируем с небольшими наборами данных.

DC

...