排名計(jì)算問題
計(jì)算排名的過程,取決于一系列因素。不同語言的斷字符對(duì)文本進(jìn)行的詞匯切分也不同。例如,字符串“dog-house”可以被一種斷字符斷為“dog”和“house”而被另一種斷字符斷為“dog-house”。這意味著匹配和排名將根據(jù)所指定語言而有所不同,因?yàn)椴粌H詞不同,而且文檔長(zhǎng)度也不同。文檔長(zhǎng)度的差異可能會(huì)影響所有查詢的排名。
諸如 IndexRowCount 之類的統(tǒng)計(jì)信息可能會(huì)大不相同。例如,如果一個(gè)目錄的主索引有二十億行,那么對(duì)一個(gè)新文檔的索引將被編制為內(nèi)存中的中間索引,而基于該內(nèi)存中索引內(nèi)的文檔數(shù)對(duì)該文檔的排名可能與主索引中的文檔排名不同。因此,建議在完成產(chǎn)生大量要?jiǎng)?chuàng)建索引或重新創(chuàng)建索引的行的任意填充后,使用 ALTER FULLTEXT CATALOG ... REORGANIZE Transact-SQL 語句將這些索引合并為一個(gè)主索引。全文引擎也會(huì)根據(jù)參數(shù)(例如中間索引的數(shù)目和大小)自動(dòng)合并索引。
MaxOccurrence 值被規(guī)范化到 32 個(gè)范圍的其中一個(gè)內(nèi)。這意味著,比方說,50 個(gè)詞長(zhǎng)的文檔與 100 個(gè)詞長(zhǎng)的文檔的處理方式相同。下面是用于規(guī)范化的表。由于這兩個(gè)文檔的長(zhǎng)度位于相鄰表值 32 與 128 之間的范圍內(nèi),因此將認(rèn)為它們具有相同的有效長(zhǎng)度 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 ) |
短語匹配項(xiàng)的排名方式與各個(gè)鍵類似,只不過要估計(jì) KeyRowCount (包含該短語的行數(shù)),并且此值可能會(huì)比實(shí)際值大。
ISABOUT 排名
CONTAINSTABLE 使用 ISABOUT 選項(xiàng)支持查詢加權(quán)詞。按照傳統(tǒng)信息檢索系統(tǒng)的說法,ISABOUT 表示向量空間查詢。所使用的默認(rèn)排名算法為廣為人知的公式 Jaccard。將根據(jù)查詢中的每個(gè)詞計(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ù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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