Mysql Полнотекстовый поиск не работает как задумано
У меня есть следующая структура таблицы,
keyword keyword_type
---------------------------------
Membership Renew
Membership New
Membership Lost
Membership Damage
Оба столбца проиндексированы для полнотекстового поиска. И я поставил ft_min_word_len = 3
в конфигурационном файле mysql, чтобы можно было искать слово длиной менее 4 символов. (MYSQL SHOW VARIABLES
подтверждает, что переменная установлена правильно). Но проблема, с которой я сталкиваюсь, заключается в том, что когда я выполняю следующий запрос, Membership Renew
приходит первым, Membership New
должен прийти первым, как я заказал по релевантности.
SELECT *, MATCH(keyword_name, keyword_type)
AGAINST ('+membership new' IN BOOLEAN MODE) AS relevancy
FROM table_keywords
WHERE MATCH(keyword_name, keyword_type)
AGAINST ('+membership new' IN BOOLEAN MODE) ORDER BY relevancy DESC
Как указано в других постах, я пытался
REPAIR TABLE table_keywrods QUICK
Это тоже не сработало. Любая помощь?
Спасибо шармила
1 ответ
Мои эксперименты с этим показывают, что все примеры в вашей таблице возвращают одинаковое значение релевантности с вашим запросом.
Одним из фактов поиска FULLTEXT является его зависимость от неоднозначности человека. Часто бывает трудно сделать идеальный ряд самой первой строки набора результатов.
Вы можете попробовать вставить это предложение ORDER BY, чтобы сначала показать самые короткие результаты. Это может сделать трюк; это сделал для меня.
ORDER BY relevancy DESC, LENGTH(keyword)+LENGTH(keyword_type) ASC
Вот скрипка SQL. http://sqlfiddle.com/