Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting Elasticsearch查询返回奇怪排序(基于分数)结果_Sorting_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_N Gram_Scoring - Fatal编程技术网 elasticsearch,n-gram,scoring,Sorting,elasticsearch,N Gram,Scoring" /> elasticsearch,n-gram,scoring,Sorting,elasticsearch,N Gram,Scoring" />

Sorting Elasticsearch查询返回奇怪排序(基于分数)结果

Sorting Elasticsearch查询返回奇怪排序(基于分数)结果,sorting,elasticsearch,n-gram,scoring,Sorting,elasticsearch,N Gram,Scoring,我正在使用ElasticSearchV5.3.2 我有以下映射: { "mappings":{ "info":{ "_all":{ "enabled": false }, "properties":{ "info":{ "properties":{ "email":{ "

我正在使用ElasticSearchV5.3.2

我有以下映射:

{
   "mappings":{
      "info":{
         "_all":{
            "enabled": false
         },
         "properties":{
            "info":{
               "properties":{
                  "email":{
                     "doc_values":"false",
                     "fields":{
                        "ngram":{
                           "analyzer":"custom_nGram_analyzer",
                           "type":"text"
                        }
                     },
                     "type":"keyword"
                  }
               }
            }
         }
     }
  },
  "settings":{
      "analysis":{
         "analyzer":{
             "custom_nGram_analyzer":{
                "filter":[
                   "lowercase",
                   "asciifolding",
                   "custom_nGram_filter"
                ],
                "tokenizer":"whitespace",
                "type":"custom"
            }
        },
        "filter":{
            "custom_nGram_filter":{
               "max_gram":16,
               "min_gram":3,
               "type":"ngram"
            }
        }
      }
   }
}
当我执行以下查询时,在文档分数方面我看到非常奇怪的结果:

GET /info_2017_08/info/_search
{
  "query": {
      "multi_match": {
          "query": "hotmail",
          "fields": [
              "info.email.ngram"
          ]
      }
  }
}
它带来了以下结果:

"hits": {
    "total": 3,
    "max_score": 1.3834574,
    "hits": [
      {
        "_index": "info_2017_08",
        "_type": "info",
        "_id": "AV4uQnCjzNcTF2GMY730",
        "_score": 1.3834574,
        "_source": {
            "info": {
                 "email": "pv53p8vg@gmail.com"
             }
        }
     },
     {
        "_index": "info_2017_08",
        "_type": "info",
        "_id": "AV4uQm93zNcTF2GMY73x",
        "_score": 0.3967861,
        "_source": {
            "info": {            
                "email": "-vb6sbw54@hotmail.com"
            }
        }
     },
     {
         "_index": "info_2017_08",
         "_type": "info",
         "_id": "AV4uQmYbzNcTF2GMY73P",
         "_score": 0.36409757,
         "_source": {
             "info": {
                 "email": "985pu4c.r02a@gmail.com"
             }
         }
     }
  ]
}
现在注意分数。如果我搜索过“hotmail”这个词,那么如果第一个结果是...@gmail.com,第二个结果是...@hotmail.com,那么为什么第一个结果的分数要高于第二个呢

第二个查询应该与ngram“mail”和“hotmail”匹配,而第一个查询只与ngram“mail”匹配,那么产生这种结果的原因是什么


提前感谢。

Elasticsearch使用TF/IDF统计信息独立计算每个碎片上文档的分数。因此,如果您有两个具有下一个内容的碎片:

  • “信息电子邮件”:“985pu4c。r02a@gmail.com"
  • “信息电子邮件”:“1085pu4c。r02a@gmail.com,“info.email”:-vb6sbw54@hotmail.com"
  • 然后,对于您的特定查询,来自第一个分片的单个文档的得分将高于来自第二个分片的任何文档


    您可以使用下一个API调用检查每个碎片的内容:
    GET index/\u search?preference=\u碎片:0

    是的,您是对的,我也发现了这一点。当我使用查询参数
    search\u type=dfs\u query\u然后\u fetch
    进行相同的查询时,我得到的
    hotmail
    得分高于任何其他
    gmail
    。现在,我必须找出搜索类型在查询性能方面的差异。如果你有这方面的信息,我想知道。谢谢。这将对性能产生影响,因为它需要在碎片-细节之间进行额外的往返。在这里,您甚至可以找到一句话:不要使用dfs\u查询\u然后\u在生产中获取。。。另一种方法是,您可以尝试使用,以确保所有相关文档都指向同一个碎片,也可以使用单个碎片。