我在做一个非常标准的MySQL MATCH(...) AGAINST(...)
查询。 我返回每个行作为列的得分score
。 这里的问题是,得分可以超过1,所以得到一个百分比棘手(乘以100),由于这一事实,我可以得到的分数大于1。我的问题是,我可以恢复正常的比分列,所以我得到所有得分从0到1,但保持它们的比例(例如,4:1的得分将是1,和2的分数将成为0.5等,但4可以是动态的上限)。
我的查询如下:
SELECT *, MATCH(body) AGAINST ('string') AS score
FROM home_posts
WHERE MATCH(body) AGAINST ('string')
在MySQL的得分MATCH
是不是一个百分比,并试图将其转换成这样将完全是完全错误的做法。 你可以在阅读它背后的数学http://forge.mysql.com/wiki/MySQL_Internals_Algorithms#Full-text_Search
编辑:我会尝试
SELECT *,
MATCH(body) AGAINST ('string') AS score,
(MATCH(body) AGAINST ('string') / maxScore) AS normalisedScore
FROM home_posts,
(SELECT MAX(MATCH(body) AGAINST ('string')) AS maxScore
FROM home_posts) maxScoreTable
WHERE MATCH(body) AGAINST ('string')