Как оптимизировать полнотекстовый поиск MySQL / MyISAM со многими результатами - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть MySQL-таблица MySQL с полнотекстовым индексом для столбца ключевых слов и 20 миллионами строк.Это хорошо работает, когда поиск редких слов, например:

SELECT count(*) FROM books WHERE MATCH(keywords) AGAINST ('+DUCK' IN BOOLEAN MODE)

(0,005 с, 2k результатов)

Но когда я ищу более общие термины, это намного медленнее:

SELECT count(*) FROM books WHERE MATCH(keywords) AGAINST ('+YES' IN BOOLEAN MODE)

(результаты 5 с, 2 миллиона)

Это имеет смысл, поскольку последняя возвращает намного больше строк, но тогда как я могу предварительно отфильтровать строки перед текстовым поиском?Это не работает:

SELECT count(*) FROM books WHERE date > "2019-09-23" AND MATCH(keywords) AGAINST ('+YES' IN BOOLEAN MODE)

(5 с, 0 результат)

...