排名計算問題
計算排名的過程,取決于一系列因素。不同語言的斷字符對文本進行的詞匯切分也不同。例如,字符串“dog-house”可以被一種斷字符斷為“dog”和“house”而被另一種斷字符斷為“dog-house”。這意味著匹配和排名將根據(jù)所指定語言而有所不同,因為不僅詞不同,而且文檔長度也不同。文檔長度的差異可能會影響所有查詢的排名。
諸如 IndexRowCount 之類的統(tǒng)計信息可能會大不相同。例如,如果一個目錄的主索引有二十億行,那么對一個新文檔的索引將被編制為內(nèi)存中的中間索引,而基于該內(nèi)存中索引內(nèi)的文檔數(shù)對該文檔的排名可能與主索引中的文檔排名不同。因此,建議在完成產(chǎn)生大量要創(chuàng)建索引或重新創(chuàng)建索引的行的任意填充后,使用 ALTER FULLTEXT CATALOG ... REORGANIZE Transact-SQL 語句將這些索引合并為一個主索引。全文引擎也會根據(jù)參數(shù)(例如中間索引的數(shù)目和大小)自動合并索引。
MaxOccurrence 值被規(guī)范化到 32 個范圍的其中一個內(nèi)。這意味著,比方說,50 個詞長的文檔與 100 個詞長的文檔的處理方式相同。下面是用于規(guī)范化的表。由于這兩個文檔的長度位于相鄰表值 32 與 128 之間的范圍內(nèi),因此將認為它們具有相同的有效長度 128 (32 < docLength <= 128)。
|
|
---|---|
{ 16, 32, 128, 256, 512, 725, 1024, 1450, 2048, 2896, 4096, 5792, 8192, 11585, 16384, 23170, 28000, 32768, 39554, 46340, 55938, 65536, 92681, 131072, 185363, 262144, 370727, 524288, 741455, 1048576, 2097152, 4194304 }; |
CONTAINSTABLE 排名
|
|
---|---|
StatisticalWeight = Log2( ( 2 + IndexedRowCount ) / KeyRowCount ) Rank = min( MaxQueryRank, HitCount * 16 * StatisticalWeight / MaxOccurrence ) |
短語匹配項的排名方式與各個鍵類似,只不過要估計 KeyRowCount (包含該短語的行數(shù)),并且此值可能會比實際值大。
ISABOUT 排名
CONTAINSTABLE 使用 ISABOUT 選項支持查詢加權(quán)詞。按照傳統(tǒng)信息檢索系統(tǒng)的說法,ISABOUT 表示向量空間查詢。所使用的默認排名算法為廣為人知的公式 Jaccard。將根據(jù)查詢中的每個詞計算排名,然后按如下描述將這些排名相結(jié)合。
|
|
---|---|
ContainsRank = same formula used for CONTAINSTABLE ranking of a single term (above). Weight = the weight specified in the query for each term. Default weight is 1. WeightedSum = Σ[key=1 to n] ContainsRankKey * WeightKey Rank = ?( MaxQueryRank * WeightedSum ) / ( ( Σ[key=1 to n] ContainsRankKey^2 ) + ( Σ[key=1 to n] WeightKey^2 ) - ( WeightedSum ) ) |
FREETEXTTABLE 排名
|
|
---|---|
Rank = Σ[Terms in Query] w ( ( ( k1 + 1 ) tf ) / ( K + tf ) ) * ( ( k3 + 1 ) qtf / ( k3 + qtf ) ) ) Where: w is the Robertson-Sparck Jones weight. In simplified form, w is defined as: w = log10 ( ( ( r + 0.5 ) * ( N – R + r + 0.5 ) ) / ( ( R – r + 0.5 ) * ( n – r + 0.5 ) ) N is the number of indexed rows for the property being queried. n is the number of rows containing the word. K is ( k1 * ( ( 1 – b ) + ( b * dl / avdl ) ) ). dl is the property length, in word occurrences. avdl is the average length of the property being queried, in word occurrences. k1, b, and k3 are the constants 1.2, 0.75, and 8.0, respectively. tf is the frequency of the word in the queried property in a specific row. qtf is the frequency of the term in the query. |
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
