MySQL MATCH AGAINST: тот же счет, даже если несколько слов совпадают?

У меня есть запрос как

SELECT SQL_CALC_FOUND_ROWS ap.id, ap.name,
MATCH(t.uri_slug) AGAINST('"tomatoe"') AS tag_score,
MATCH(ap.name) AGAINST('blue tomatoe' IN BOOLEAN MODE) AS name_score
FROM [...]
GROUP BY ap.id
ORDER BY (tag_score + name_score) DESC, tag_score DESC, name_score DESC
LIMIT 10

Результат этого запроса:

id      | name                  | tag_score                 | name_score
--------|-----------------------|---------------------------|------------------
11622   | Holy Tomatoe          | 11.033016204833984        | 7.384857654571533
26996   | Tomatoe Max           | 11.033016204833984        | 7.384857654571533
14116   | Newblue-Tomatoe       | 11.033016204833984        | 7.384857654571533
38402   | Monster-Jam           | 11.033016204833984        | 0
...

Как видите, строка с идентификатором 14116 содержит как слова blue, так и tomatoe в ap.name. Даже если два слова совпадают, оценка такая же, как если бы одно слово совпадало. Так я попробовал AGAINST('+style +mode' IN BOOLEAN MODE) а также AGAINST('+*style* +*mode*' IN BOOLEAN MODE) но я не могу получить желаемый результат: чем больше совпадений слов, тем больше очков должно быть возвращено. Есть идеи?

0 ответов

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