閱讀33 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《深入理解Elasticsearch(原書第2版)》一2.1.4 一個例子

本節書摘來華章計算機《深入理解Elasticsearch(原書第2版)》一書中的第2章 ,第2.1.4節,[美]拉斐爾·酷奇(Rafal Ku) 馬雷克·羅戈任斯基(Marek Rogoziski)著 張世武 餘洪淼 商旦 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

2.1.4 一個例子

現在,我們已經了解評分的工作原理。接下來我們看一個在現實生活中應用評分的簡單例子。首先我們需要創建一個名為scoring的新索引。使用如下命令創建這個索引:
image

簡單起見,我們使用了隻有一個物理分片和0個副本的索引(我們不需要在這個例子中關心分布式文檔頻率)。我們需要索引一個簡單的文檔,代碼如下:
image

接著我們執行一個簡單的匹配(match)查詢,查詢的詞項是“document”。
image

Elasticsearch返回的結果如下:
image

顯然,剛才索引的這個文檔被匹配上了,並且被賦予了得分。我們可以通過下麵這條命令來查看得分的計算過程:
image

Elasticsearch返回的結果如下:
image
image

可以看出,Elasticsearch給出了針對給定文檔和查詢的詳細的得分計算過程。同時可以看出,得分等於詞項頻率(本例中是1)和逆文檔頻率(0.30685282)以及字段範數(0.625)的乘積。
現在,我們再把另一個文檔加入索引。
image

此時,如果執行最開始的查詢,我們將看到如下響應:
image
image

現在,可以對比一下TF/IDF評分公式在現實場景中的工作了。在把第2個文檔索引到相同分片後(請記住我們創建的索引隻有一個分片且沒有副本),得分發生了變化,盡管此時的查詢和剛才的一樣。這是因為一些影響得分的因子已經改變了。比如,逆文檔頻率變了,因此得分也會跟著改變。我們還需要注意對比一下兩個文檔的得分。我們查詢了一個單詞“document”,查詢匹配上了兩個文檔的相同字段的相同詞項。第2個文檔的得分為什麼較低,是因為和第1個文檔相比,它的name字段多了一個詞項。根據先前的知識儲備,我們知道,文檔越短,Lucene給出的得分越高。
希望這個簡短的介紹會讓你對評分工作機製認識得更清楚,在你需要優化查詢時理解目標查詢的工作過程。

最後更新:2017-06-23 23:35:13

  上一篇:go  《深入理解Elasticsearch(原書第2版)》一2.2 查詢改寫
  下一篇:go  《深入理解Elasticsearch(原書第2版)》一2.1.3 Elasticsearch如何看評分