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/

Другие вопросы по тегам