2008-10-23 36 views
13

我一直在嘗試全文搜索,並且很好奇Score值的含義。例如,我有以下查詢:MySQL全文搜索分數解釋

SELECT table. * , 
MATCH (
col1, col2, col3 
) 
AGAINST (
'+(Term1) +(Term1)' 
) AS Score 
FROM table 
WHERE MATCH (
col1, col2, col3 
) 
AGAINST (
'+(Term1) +(Term1)' 
) 

在結果分數我已經看到了結果,對於一個查詢,以11.166275978088 0.4667041301727之間。我知道這是MySQL關聯的想法(重量越高)。

我沒有得到的是MySQL如何得到該分數。爲什麼數字不是以小數或其他方式返回?

如果我運行查詢「IN BOOLEAN MODE」,得分總是返回1還是0?所有的結果都不是1嗎?

只是希望一些啓示。謝謝。

回答

6

通常,相關性基於每行與搜索詞相匹配的次數。確切的值將取決於很多事情,但它確實只是在同一個查詢中與其他相關值進行比較而言很重要。

如果你真的想要它背後的數學,你可以在internals manual找到它。

+0

我可以向客戶顯示值11.166275978088爲「相關性11%」嗎? – 2009-05-18 17:37:07

9

以查詢「word1 word2」爲例。

BOOLEAN模式表示您的整個查詢與文檔匹配(例如,它包含word1和word2)。布爾模式是嚴格匹配的。

通常使用的公式是基於向量空間模型的搜索。非常簡單,它會計算出兩個度量來確定一個單詞對查詢的重要程度。術語頻率(在文檔中經常出現的術語比其他術語更重要)和逆文檔頻率(許多文檔中出現的術語的權重低於少數文檔中出現的術語)。這被稱爲​​,並被用作向量空間模型的基礎。這些分數構成了Vector Space Model的基礎,其他人可以徹底解釋。 :)