私は次のようなクエリを持っています
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
...
ご覧のとおり、ID 14116 の行には、ap.name に blue と tomatoe の両方の単語が含まれています。2 つの単語が一致した場合でも、1 つの単語が一致した場合と同様にスコアは同じです。だから私は試しAGAINST('+style +mode' IN BOOLEAN MODE)
てみAGAINST('+*style* +*mode*' IN BOOLEAN MODE)
ましたが、望ましい結果を得ることができません.より多くの単語が一致するほど、より高いスコアが返されます. 何か案は?