我在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