Lucene預設的打分演算法 ES預設

2021-09-22 06:05:10 字數 1137 閱讀 7048

隨著apache lucene 4.0版本在2023年的發布,這款偉大的全文檢索工具包終於允許使用者修改預設的基於tf/idf原理的打分演算法。lucene api變得更加容易修改和擴充套件打分公式。但是,對於文件的打分計算,lucene並只是允許使用者在打分公式上修修補補,lucene 4.0推出了更多的打分模型,從根本上改變了文件的打分公式,允許使用者使用不同的打分公式來計算文件的得分。在本節,我們將深入了解lucene 4.0的新特性,以及這些特性如何融入elasticsearch。

前面已經提到,除了apache lucene 4.0以前版本中原來支援的預設相似度模型,tf/idf模型同樣支援。該模型在第2章 強大的使用者查詢語言dsllucene 預設打分演算法一節中已經詳細論述了。

新引入了三種相似度模型:

divergence from randomness:這是一種基於同名概率模型的相似度模型。想要在elasticsearch使用該模型,就要用到名稱,dfr。據說該相似度模型適用於自然語言類的文字。

information based:這是最後乙個新引入的相似度模型,它與diveragence from randomness模型非常相似。想要在elasticsearch使用該模型,就要用到名稱,ib。與dfr相似度模型類似,據說該模型也適用於自然 語言類的文字。

當談論到查詢的相關性,很重要的一件事就是對於給定的查詢語句,如何計算文件得分。首先要弄清楚的是文件得分是什麼。文件得分是乙個用來描述查詢語句和文件之間匹配程度的變數。在本節,我們將學習lucene預設的打分機制:tf/idf(term frequency/inverse document frequecy)演算法,以及它是如何對相關文件進行打分排序。理解預設的打分演算法對設計複雜查詢語句來說至關重要,特別是在決定各個查詢子句權重的時候。

暫時還是先回來繼續**打分機制。為了計算出乙個文件的得分,我們必須考慮如下的因素:

接下來看看打分公式的廬山真面目。如果只是為了調整查詢語句之間的關聯關係,使用者不必去理解它的原理。但是至少要知道它是如何工作的。

tf/idf公式的概念版是下面這個樣子的:

上面的公式展示了布林資訊檢索模型和向量空間資訊檢索模型的組合。我們暫時不去討論它,直接見識實際應用的公式,它是在lucene實現並且正在使用的公式。 

深入理解Lucene預設打分演算法

當談論到查詢的相關性,很重要的一件事就是對於給定的查詢語句,如何計算文件得分。文件得分是乙個用來描述查詢語句和文件之間匹配程度的變數。如果你希望通過干預lucene查詢來改變查詢結果的排序,你就需要對lucene的得分計算有所理解。暫時還是先回來繼續 打分機制。為了計算出乙個文件的得分,我們必須考慮...

Lucene打分公式的數學推導

在進行lucene的搜尋過程解析之前,有必要單獨的一張把lucene score公式的推導,各部分的意義闡述一下。因為lucene的搜尋過程,很重要的乙個步驟就是逐步的計算各部分的分數。lucene的打分公式非常複雜,如下 在推導之前,先逐個介紹每部分的意義 以上在lucene的文件中已經詳細提到,...

es6函式預設引數與手動設定預設引數的區別

函式預設引數 之前我們不能直接為函式指定預設引數,因此很多時候為了保證傳入的引數具備乙個預設值,我們常常使用如下的方法 function add x,y console.log add 50這種方式並不是沒有缺點,比如當我傳入乙個x值為false 或運算子判斷為假的時候 這個時候任然會取到預設值,就...