- 相關性- Relevance
- 搜尋的相關性算分,描述了一個文件和查詢語句匹配的程度。ES會對每個匹配查詢條件的結構進行算分
_score
- 打飯的本質是排序,需要把最符合使用者需求的文件排在前面。ES 5之前,預設的相關性打分採用TF-IDF,現在採用BM25
- Term Frequency :檢查詞在一篇文件裡出現的頻率
- 度量一條查詢和結果文件縣管轄的建檔方法:簡單講搜尋每一個詞的TF進行相加
- Stop Word
- “的”在文件中出現了很多次,但是對貢獻相關度幾乎沒有用處,不應該考慮他們的TF
- DF:檢索詞在所有文件中出現的頻率
- “區塊鏈”在相對比較少的文件中出現
- “應用”在相對比較多的文件中出現
- “Stop Word”在大量的文件中出現
- Inverse Document Frequency :簡單說 = log(全部文件書 / 檢索詞出現過的文件總數)
- TF-IDF 本質上就是將TF求和變成了加權求和
- TF(區塊鏈) IDF(區塊鏈) + TF(的) IDF(的)+ TF(應用)* IDF(應用)
- TF-IDF 被公認為是資訊檢索領域最重要的發明
- 除了在資訊檢索,再文獻分類和其他相關領域有著非常廣泛的應用
- IDF的概念,最早是劍橋大學的“斯巴達.瓊斯”提出
- 1972年 ——“關鍵詞特殊性的統計解釋和它在文獻檢索中的應用”
- 但是沒有從理論上件事IDF應該是用log(全部文件書 / 檢索詞出現過的文件總數),而不是其他函式。也沒有做進一步的研究
- 1970,1980年代薩爾頓和羅賓遜,進行了進一步的證明和研究,並用夏農資訊做了證明
- 現代搜尋引擎,對TF-IDF進行了大量細微的優化
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
}
}
}