ES 筆記十八:搜尋的相關性算分

CrazyZard發表於2019-11-07
  • 相關性- Relevance
    • 搜尋的相關性算分,描述了一個文件查詢語句匹配的程度。ES會對每個匹配查詢條件的結構進行算分_score
    • 打飯的本質是排序,需要把最符合使用者需求的文件排在前面。ES 5之前,預設的相關性打分採用TF-IDF,現在採用BM25

ES筆記十八:搜尋的相關性算分

  • Term Frequency :檢查詞在一篇文件裡出現的頻率
    • 檢查詞出現的次數除以文件的總字數
  • 度量一條查詢和結果文件縣管轄的建檔方法:簡單講搜尋每一個詞的TF進行相加
    • TF(區塊鏈) + TF(的)+ TF(應用)
  • Stop Word
    • “的”在文件中出現了很多次,但是對貢獻相關度幾乎沒有用處,不應該考慮他們的TF
  • DF:檢索詞在所有文件中出現的頻率
    • “區塊鏈”在相對比較少的文件中出現
    • “應用”在相對比較多的文件中出現
    • “Stop Word”在大量的文件中出現
  • Inverse Document Frequency :簡單說 = log(全部文件書 / 檢索詞出現過的文件總數)
  • TF-IDF 本質上就是將TF求和變成了加權求和
    • TF(區塊鏈) IDF(區塊鏈) + TF(的) IDF(的)+ TF(應用)* IDF(應用)

ES筆記十八:搜尋的相關性算分

  • TF-IDF 被公認為是資訊檢索領域最重要的發明
  • 除了在資訊檢索,再文獻分類和其他相關領域有著非常廣泛的應用
  • IDF的概念,最早是劍橋大學的“斯巴達.瓊斯”提出
    • 1972年 ——“關鍵詞特殊性的統計解釋和它在文獻檢索中的應用”
    • 但是沒有從理論上件事IDF應該是用log(全部文件書 / 檢索詞出現過的文件總數),而不是其他函式。也沒有做進一步的研究
  • 1970,1980年代薩爾頓和羅賓遜,進行了進一步的證明和研究,並用夏農資訊做了證明
  • 現代搜尋引擎,對TF-IDF進行了大量細微的優化

ES筆記十八:搜尋的相關性算分

ES筆記十八:搜尋的相關性算分

ES筆記十八:搜尋的相關性算分

demo

PUT testscore/_bulk
{"index":{"_id":1}}
{"content":"we use Elasticsearch to power the search"}
{"index":{"_id":2}}
{"content":"we like elasticsearch"}
{"index":{"_id":3}}
{"content":"The scoring of documents is caculated by the scoring formula"}
{"index":{"_id":4}}
{"content":"you know, for search"}
//查詢
POST /testscore/_search
{
  "explain": true,
  "query": {
    "match": {
     // "content":"you"
      "content": "elasticsearch"
      //"content":"the"
      //"content": "the elasticsearch"
    }
  }
}
  • Boosting 是控制相關度的一種手段
    • 索引,欄位或查詢子條件
  • 引數boost的含義
    • 當 boost > 1時,打分的相關度相對性提高
    • 當 0 < boost < 1 時,打分的權重相對性降低
    • 當 boost < 0 時,貢獻度負分
POST testscore/_search
{
    "query": {
        "boosting" : {
            "positive" : {
                "term" : {
                    "content" : "elasticsearch"
                }
            },
            "negative" : {
                 "term" : {
                     "content" : "like"
                }
            },
            "negative_boost" : 0.2
        }
    }
}

相關文章