我正在做一个非常标准的MySQL MATCH(...) AGAINST(...)
查询。我将每行的分数作为列score
返回。这里的问题是得分可能超过1,所以获得一个百分比是棘手的(乘以100),因为我可以得到大于1的分数。我的问题是,我可以将得分列标准化,以便得到所有分数从0到1,但保持它们的比例(例如,4分为1分,2分为0.5分等,但4分为动态上限)。
我的查询如下:
SELECT *, MATCH(body) AGAINST ('string') AS score
FROM home_posts
WHERE MATCH(body) AGAINST ('string')
答案 0 :(得分:1)
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')