2016-08-15 15 views
2

我想了解Elasticsearch所做的計算以獲取查詢的idf。錯誤的maxDocs和docFreq與dfs_query_then_fetch

POST /library/books/_bulk 
{ "index": { "_id":1 }} 
{ "title": "The quick brown fox", "price":5 } 
{ "index": { "_id":2 }} 
{ "title": "The quick brown fox jumps over the lazy dog", "price":15 } 
{ "index": { "_id":3 }} 
{ "title": "The quick brown fox jumps over the quick dog", "price":8 } 
{ "index": { "_id":4 }} 
{ "title": "Brown fox brown dog", "price":2 } 
{ "index": { "_id":5 }} 
{ "title": "Lazy dog", "price":9 } 

我不明白以下查詢的評分: 我從一個例子拿着單據與這些線(我用的感覺)在本地主機創建

GET /library/books/_search?explain&search_type=dfs_query_then_fetch 
{ 
    "query":{ 
    "match": { 
     "title": "quick fox" 
    } 
    } 
} 

從什麼我瞭解了ElasticSearch/Lucene的文檔,maxDocs應該是5,而docFreq 3.然而,解釋爲我提供docFreq = 1,maxDocs = 1爲第一個文檔的「quick」和「fox」的idf (「快速棕色狐狸」),另一個文檔的maxDocs = 2。

我也試過沒有dfs_query_then_fetch,並且首選= _primary或​​_replica具有類似的結果。

具有較高分數的文檔是正確的,但idf不是我的預期。

解釋如何顯示正確的maxDocs/docFreq,爲什麼我沒有我期望的數字,即使使用dfs_query_then_fetch?

謝謝

回答

2

這是錯誤的elasticsearch 2.X explain API時SEARCH_TYPE是dfs_query_then_fetch。解釋和分數與實際分數不匹配。

git issue給出了更多的見解。然而實際得分應該是準確的。

+0

謝謝你的回答,我沒有看到關於分數和解釋的這個問題,但它回答了我的問題。 – Corbac

+0

肯定np,很高興你發現它很有用! – keety