我對lucene評分策略有點困惑。我知道,Lucene的得分公式是這樣的:Lucene評分:queryNorm在什麼情況下使用?
score(q,d) = coord(q,d) x queryNorm(q) X SUM <t_in_q> (tf(t_in_d) x idf(t)^2 x t.getBoost() x norm(t,d))
我理解這個公式中的每個組件除了queryNorm(Q)。正如官方文件解釋,
queryNorm(Q)是用於 查詢可比性之間做出成績歸一化因子。這個因素並不影響文檔排名 (因爲所有排名文檔都乘以相同因子),但 只是試圖使得來自不同查詢的分數(或甚至不同的索引)具有可比性。
爲什麼我需要比較不同查詢之間的分數?換句話說,你可以給一個的例子來顯示在哪個上下文中queryNorm(q)有用嗎?
這是一個有趣的線索。我仍然在爲普通用戶提供對queryNorm更多控制的工作,這對搜索工作沒有任何壞處。但是,因爲它是以重量計算的,所以擔心的計算成本很小。 – Denzel
所以回到我的問題,跨越查詢比較分數似乎更多地在機器學習人員,如文檔聚類,並很少出現在常見的搜索工作,對嗎? – Denzel
有策略可以使查詢具有可比性,而不必去機器學習(例如,參見[餘弦相似度](http://en.wikipedia.org/wiki/Cosine_similarity))。在Lucene中,它是可以避免的。用於比較不同查詢之間分數的解決方案是重新考慮您的要求。 – femtoRgon