我正在努力寻找一种按特定顺序排列我的 MySQL FULLTEXT 结果的方法。假设我有这些记录:
ID | Title
----+-----------------------------------
1 | Test test test truck from a test company.
2 | Test car from Germany.
3 | A car from London.
现在,如果我运行以下查询:
SELECT id, MATCH (title,keywords) AGAINST ('test car') AS score
FROM titles_tbl
WHERE MATCH (title,keywords) AGAINST ('test car')
ORDER BY score DESC
(注意:在我的应用程序中,我在标题和关键字两列中使用 FULLTEXT。在这个问题中,我仅以查询一列为例。)
它按应有的方式返回所有记录,但顺序让我感到困惑。我可以理解分数是什么以及它来自哪里,但我希望它以不同的顺序排列。上面的查询会返回类似这样的结果:
ID | Title | Score
----+----------------------------------------------------+---------
1 | Test test test truck from a test company. | 1.5
2 | Test car from Germany. | 1.0
3 | A car from London. | 0.5
在第 1 行中,它发现“测试”的次数比其他任何东西都多,即使在该行中根本没有找到“汽车”,它的得分也更高。我实际上希望它在“测试”和“汽车”两个词都匹配的地方得分更高。因此,实际上,第 2 行,“Test car from Germany”实际上应该排名较高,因为它包含两个词,而第 2 和 3 行应该排名较低,因为它们不包含这两个词,但应该按它们的次数排序被提及。
所以,简而言之,我想对我的结果进行排序,从所有匹配的单词开始,以一个或多个匹配的单词结尾,然后按单词实际被提及的次数排序。
我如何实现这一目标?