我在mysql中使用Match(Col1)Against(Val)。如何以百分比的形式得到mysql匹配结果?
select match(body) against(body_var) from articles;
现在如果完全匹配,我得到的结果是一个数字(例如14.43)。 这个数字是什么意思?而主要问题是可我得到的结果以百分比的形式(如0.94)
感谢您的帮助
我在mysql中使用Match(Col1)Against(Val)。如何以百分比的形式得到mysql匹配结果?
select match(body) against(body_var) from articles;
现在如果完全匹配,我得到的结果是一个数字(例如14.43)。 这个数字是什么意思?而主要问题是可我得到的结果以百分比的形式(如0.94)
感谢您的帮助
有可能是一个更简单的方法来做到这一点..不知怎的,我就倒下了兔子洞这一个。但它的测试和工程(成果回报率)
SELECT (mthCount/ttlCount) AS mPercent
FROM (
SELECT COUNT(*) AS mthCount
FROM articles WHERE (
MATCH(body) AGAINST(body_var)
)
) AS MCount JOIN (
SELECT COUNT(*) AS ttlCount
FROM articles
) AS TCount;
它返回一个记录/同列mPercent
你也可以把它圆到小数点后两位...
导致SELECT FORMAT((mthCount/ttlCount),2) AS mPercent
FROM (
SELECT COUNT(*) AS mthCount
FROM articles WHERE (
MATCH(body) AGAINST(body_var)
)
) AS MCount JOIN (
SELECT COUNT(*) AS ttlCount
FROM articles
) AS TCount;
正如我说..我用50场比赛 三百五十零分之五十零= 0.1396648 ......(对于第一个结果) 0.14,四舍五入的结果
测试它针对358行如果您正在寻找将相关性值转换为单个结果的百分比 - 它不会真的发生...
来自MATCH/AGAINST的相关性值不是百分比匹配的良好指标。互联网..搜索“将相关性值转换为百分比”...
如果你想订购您的结果通过relevence匹配%,其中第一个结果总是为100%relevence,你可以做到这一点...
至于试图让PHP之类的similar_text价值 - 你是更好地卸载的工作到客户端...
Full-text search relevance is measured in?
http://forums.mysql.com/read.php?107,125239,146610#msg-146610
http://seminex.blogspot.com/2005/06/mysql-relevance-in-fulltext-search.html
谢谢,但这会给我的百分比与真实相似度无关。我非常感谢你的帮助,但这不是我所期待的。 – Alaa 2011-03-12 07:08:25
据我了解,当你在“50%匹配”之后的“有趣的猫”文本中搜索“猫”时,你希望得到0.50。但这是不可能的,因为在寻找“杜兰”时会出现“杜兰杜兰”的情况。据我所知,当你搜索“杜兰”时, “杜兰杜兰”可以获得更多的匹配点,即使你有一个单独的“杜兰”行。 – frail 2011-03-10 13:31:41
@frail:我走了另一条路线......我在想,他看到所有行匹配的行的百分比...如果他只想要全文索引/列的匹配所代表的百分比 - 那么可以理解杜兰杜兰会获得更多的匹配点(因为它发生更多) – CarpeNoctumDC 2011-03-11 00:33:01
感谢frail和CarpeNoctumDC ,,,但我在找什么是类似于PHP中的similar_text函数。再次感谢 – Alaa 2011-03-12 07:04:09