這個主要對
lucene
的評分公式裡面的各個引數做乙個詳細的解釋。其他的可參照
idf(t)表示的是反轉文件頻率( inverse document frequency).這個函式表示的是(t:term)在所有文件中一共在多少個文件中出現過。因為文件出現的次數越少就越容易定位,所以文件數越少,得分就越高。這個函式的預設計算公式如下:
idf(t)
=
1 + log
(numdocs
–––––––––
docfreq+1 )
boost(t.field in d)表示文件得分,它包括
document boost– 文件的boost,是建索引的時候設定的文件得分。
field boost– 在將乙個字段加入到文件中去的時候加入的字段得分。(不同的字段得分不同有利於排序,例如標題的得分應該比內容的得分要高等)
boost(t.field in d)=doc.getboost*
∏f.getboost
()
fieldfin d named ast
lengthnorm(field)
–文件在建立索引的時候加入的乙個引數,根據文件的某個字段含有的
term
數量來計算的。
term
數量比較少的字段將得到更多的得分。這個函式是由
similarity
類在建立索引的時候計算的。(
1/numterms*numterms
)coord(q,d)
這個函式表示的是在這個文件(d)中
term(t
)出現的百分比,也就是文件中出現的不同
term
數量和查詢條件(
q)中的不同
term(t
)的數量之比。所以,文件中出現的
term
種類越多,分值就高。
querynorm(q)這個函式是乙個調節因子,不影響具體的排序情況。主要是用來讓排序結果在不同的查詢條件(或者不同的索引)之間可以比較。這個條件是在搜尋的時候計算的。它的計算公式如下:
querynorm(q) =
querynorm(sumofsquaredweights)
=
1––––––––––––––
sumofsquaredweights½
the sum of squared weights (查詢條件的terms)是由查詢的權重物件計算的。不同的查詢方式,有不同的計算方法。例如:boolean query的計算公式如下:
sumofsquaredweights
=
q.getboost()
2·
∑(idf(t)
· t.getboost()
) 2t in q
luence評分機制
coord q,d 評分因子,基於文件 現查詢項的個數。越多的查詢項在乙個文件中,說明文件的匹配程度越高。querynorm q 查詢的標準查詢 tf t in d 指項t在文件d 現的次數frequency。具體值為次數的開根號。idf t 反轉文件頻率,出現項t的文件數docfreq t.get...
ElasticSearch 評分排序
近期有乙個需求,需要對優惠券可用商品列表加個排序,只針對面值類的券不包括折扣券。需求是這樣的,假設有一張面值券 50 塊錢,可用商品列表 a 100 b 40 c 10,當使用者查詢當前券可用商品列表的時候優先將卡券可以直接抵扣且不需要使用者在額外支付的商品排在前面。c 10 b 40 a 100 ...
評分演算法 遊戲平衡性調整,街頭評分演算法優化
親愛的玩家,新版本即將發布!除了即將開啟的神秘商店外,新版本還將對街頭評分演算法等內容進行優化!下面是具體的內容介紹。街頭評分演算法即將優化 新版本中,遊戲將對街頭模式的評分演算法再次進行優化。本次優化在原有基礎上新增了衡量維度,通過大資料演算法綜合衡量玩家在比賽中的多項表現 具體如下表 來計算玩家...