使用dfs_query_then_fetch错误的maxDocs和docFreq

时间:2016-08-15 16:37:05

标签: elasticsearch lucene

我试图了解Elasticsearch为获取查询的idf所做的计算。 我从示例中获取的文档是使用Localhost:

中的这些行(我使用Sense)创建的
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表示“快速”和“狐狸”的idf “为第一个文件(”快速棕色狐狸“),另一个文件为maxDocs = 2.

我也试过没有dfs_query_then_fetch,并且偏好= _primary或​​_replica也有类似的结果。

分数较高的文件是正确的,但idf不是我的预期。

解释如何显示正确的maxDocs / docFreq,为什么我没有预期的数字,即使使用dfs_query_then_fetch?

谢谢

0 个答案:

没有答案