我們曾經講過,預設情況下,返回結果是按相關性倒序排列的。
但是什麼是相關性? 相關性如何計算?
每個文件都有相關性評分,用乙個正浮點數字段_score
來表示
。_score
的評分越高,相關性越高。
查詢語句會為每個文件生成乙個_score
字段。評分的計算方式取決於查詢型別
是我們用來計算全文本字段的值相對於全文字檢索詞相似程度的演算法。
elasticsearch 的相似度演算法
被定義為檢索詞頻率/反向文件頻率, tf/idf
,包括以下內容:
檢索詞頻率檢索詞在該字段出現的頻率?出現頻率越高,相關性也越高。 欄位中出現過 5 次要比只出現過 1 次的相關性高。反向文件頻率每個檢索詞在索引中出現的頻率?頻率越高,相關性越低。檢索詞出現在多數文件中會比出現在少數文件中的權重更低。字段長度準則欄位的長度是多少?長度越長,相關性越低。 檢索詞出現在乙個短的 title 要比同樣的詞出現在乙個長的 content 字段權重更大。單個查詢可以聯合使用 tf/idf 和其他方式,比如短語查詢中檢索詞的距離或模糊查詢裡的檢索詞相似度。
相關性並不只是全文字檢索的專利。也適用於 yes|no 的子句,匹配的子句越多,相關性評分越高。
如果多條查詢子句被合併為一條復合查詢語句
,比如 bool 查詢,則每個查詢子句計算得出的評分會被合併到總的相關性評分中。
我們有一️整章著眼於相關性計算和如何讓其配合你的需求 控制相關度
。理解評分標準
當除錯一條複雜的查詢語句時,
想要理解_score
究竟是如何計算是比較困難的。elasticsearch 在 每個查詢語句中都有乙個 explain 引數,將explain
設為true
就可以得到更詳細的資訊。
/_search
?explain }}
explain
引數可以讓返回結果新增乙個_score
評分的得來依據。
增加乙個explain
引數會為每個匹配到的文件產生一大堆額外內容,但是花時間去理解它是很有意義的。 如果現在看不明白也沒關係 — 等你需要的時候再來回顧這一節就行。下面我們來一點點的了解這塊知識點。
首先,我們看一下普通查詢返回的元資料:
"_index"
:"us"
,"_type"
:"tweet"
,"_id"
:"12"
,"_score"
:0.076713204
,"_source":,
這裡加入了該文件來自於哪個節點哪個分片上的資訊,這對我們是比較有幫助的,因為詞頻率和 文件頻率是在每個分片中計算出來的,而不是每個索引中:
"_shard":1
,"_node"
:"mzivycsqswcg_m_zffss9q"
,然後它提供了_explanation
。每個
入口都包含乙個description
、value
、details
字段,它分別告訴你計算的型別、計算結果和任何我們需要的計算細節。:]
},,]}
]}honeymoon
相關性評分計算的總結
檢索詞頻率
反向文件頻率
字段長度準則
輸出explain
結果代價是十分昂貴的,它只能用作除錯工具
。千萬不要用於生產環境。
第一部分是關於計算的總結。告訴了我們honeymoon
在tweet
欄位中的檢索詞頻率/反向文件頻率或
tf/idf, (這裡的文件0
是乙個內部的 id,跟我們沒有關係,可以忽略。)
然後它提供了權重是如何計算的細節:
檢索詞頻率:
檢索詞 `honeymoon` 在這個文件的 `tweet` 欄位中的出現次數。反向文件頻率:
檢索詞 `honeymoon` 在索引上所有文件的 `tweet` 欄位中出現的次數。字段長度準則:
在這個文件中, `tweet` 字段內容的長度 -- 內容越長,值越小。複雜的查詢語句解釋也非常複雜,但是包含的內容與上面例子大致相同。 通過這段資訊我們可以了解搜尋結果是如何產生的。
json 形式的explain
描述是難以閱讀的, 但是轉成 yaml 會好很多,只需要在引數中加上format=yaml
。
理解文件是如何被匹配到的
當explain
選項加到某一文件上時,explain
api 會幫助你理解為何這個文件會被匹配,更重要的是,乙個文件為何沒有被匹配。
請求路徑為/index/type/id/_explain
,如下所示:/us
/tweet/12
/_explain
},"must":}
}}}不只是我們之前看到的充分解釋
,我們現在有了乙個description
元素,它將告訴我們:
也就是說我們的user_id
過濾子句使該文件不能匹配到。
spearman相關性分析 相關性分析
r語言常用函式 cor 預設結果為矩陣 cor mydat,use method use 缺失值的處理,method 處理方法 cor x,y 可以計算非方形矩陣,x y分別為2個矩陣,相同的行數 cor.test x,y,alternative method x y為檢驗相關性的變數 librar...
統計 相關性與自相關性
相關係數度量指的是兩個不同事件彼此之間的相互影響程度 而自相關係數度量的是同一事件在兩個不同時期之間的相關程度,形象的講就是度量自己過去的行為對自己現在的影響。自相關,也稱 序列相關。是乙個訊號於其自身在不同時間點的互相關。非正式地來說,它就是兩次觀察之間的相似度對它們之間的時間差的函式。它是找出重...
基因相關性
描述 為了獲知基因序列在功能和結構上的相似性,經常需要將幾條不同序列的dna進行比對,以判斷該比對的dna是否具有相關性。現比對兩條長度相同的dna序列。首先定義兩條dna序列相同位置的鹼基為乙個鹼基對,如果乙個鹼基對中的兩個鹼基相同的話,則稱為相同鹼基對。接著計算相同鹼基對佔總鹼基對數量的比例,如...