MySQL полнотекстовый поиск не работает, даже если запись существует и ft_min_word_len установлен в 1 - PullRequest
1 голос
/ 29 апреля 2019

У меня есть таблица mysql, и мне нужно выполнить полнотекстовый поиск по ней. Однако, хотя требуемые данные находятся в таблице, полнотекстовый поиск не извлекает их.

Вот запрос:

SELECT * from declensions_english where match(finite) against("did" IN     BOOLEAN MODE)

Поисковые данные выглядят так:

I did

Конечно, это в столбце, называемом конечным. Рядом с этой таблицей около миллиона строк, поэтому подстановочные знаки очень медленные.

Почему это не работает? Это не из-за длины слова (сделал), потому что я уже установил ft_min_word_len в 1. Существуют другие случаи с трехбуквенными словами, которые обеспечивают ожидаемый результат (т.е. данные извлекаются). Но есть также случаи, когда даже четырехбуквенные слова не найдены. Я понятия не имею, что происходит, но со вчерашнего дня я использую только полнотекстовый поиск, поэтому считайте меня новичком здесь.

1 Ответ

2 голосов
/ 29 апреля 2019

Поскольку вы используете ft_min_word_len, я должен предположить, что ваша таблица использует механизм таблицы myisam.

Слово did находится в списке стоп-слов myisam , поэтомупоиск не возвращает его.

Вы можете отключить или изменить список стоп-слов или перейти на innodb, у которого нет этого слова в стоп-слове по умолчаниюlist.

Если честно, я не могу представить себе причину использовать myisam в 2019 году. Вам действительно следует перейти на innodb.

...