弹性搜寻结果中的分数有误

这是山姆丹

没有为弹性搜索查询结果获得正确的分数。

ES查询-

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "(emergency) OR (emergency*) OR (*emergency) OR (*emergency*)",
            "fields": [
              "MDMGlobalData.Name1"
            ]
          }
        }
      ]
    }
  }
}

ES结果-

{
  "took": 29,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 798,
      "relation": "eq"
    },
    "max_score": 9.169065,
    "hits": [
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551037160",
        "_score": 9.169065,
        "_source": {
          "MDMGlobalData": {
            "Name1": "PARAGON EMERGENCY"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551040507",
        "_score": 9.169065,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY MD"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551076447",
        "_score": 9.169065,
        "_source": {
          "MDMGlobalData": {
            "Name1": "COASTAL EMERGENCY"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551100746",
        "_score": 9.169065,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY MD"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551090880",
        "_score": 9.169065,
        "_source": {
          "MDMGlobalData": {
            "Name1": "PAFFORD EMERGENCY"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551106787",
        "_score": 9.169065,
        "_source": {
          "MDMGlobalData": {
            "Name1": "CAPROCK EMERGENCY"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551021568",
        "_score": 9.121077,
        "_source": {
          "MDMGlobalData": {
            "Name1": "WILTON EMERGENCY"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551124137",
        "_score": 9.121077,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY ONE"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551125549",
        "_score": 9.121077,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY ONE"
          }
        }
      },
      {
        "_index": "customermasterdata",
        "_type": "_doc",
        "_id": "MDMCM551133066",
        "_score": 9.121077,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY MD"
          }
        }
      }
    ]
  }
}

理想情况下,结果中的第一个集合应该是Name1,其值仅是“ emergency”或以单词“ emergency”开头

我们如何在几乎前5个结果集中获得相同的分数?作为Name1值是不同的。

由于评分错误,结果混乱不堪。如何更正结果中的分数?

吉布斯

不,不必如此。因为ES遵循Lucene评分功能

得分相同的原因:

  1. 每个文档中只有两个词- emergency and one more word
  2. Emergency单词按原样匹配。字段长度相同
  3. 出现的次数是一。词频相同
  4. 所有条款的相关性都是相同的。IDF
  5. 座标与您的文件相同,只包含一次Emergency

但是,如果您有一个带有的文档Emergency X Y Z,那么该文档的得分将低于您拥有的其他文档。因为这term frequency一点更高。

而且,如果您只有Emergency,则该文档的分数将高于所有分数。

在您的方案中获得相同的分数是完全正常的,因为用户不知道emergency他/她的意思。

更新:

{
    "query":{
        "bool":{
            "must":{
                "term":{
                "MDMGlobalData.Name1":"emergency"
                }
            }
        }
    }
}

使用样本数据,输出:

"hits": [
      {
        "_index": "emerge",
        "_type": "_doc",
        "_id": "iN1hKnMBojxRtp6HNI7d",
        "_score": 0.10938574,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY"
          }
        }
      },
      {
        "_index": "emerge",
        "_type": "_doc",
        "_id": "g91TKnMBojxRtp6Hto4q",
        "_score": 0.08701137,
        "_source": {
          "MDMGlobalData": {
            "Name1": "PARAGON EMERGENCY"
          }
        }
      },
      {
        "_index": "emerge",
        "_type": "_doc",
        "_id": "hN1TKnMBojxRtp6H2I6A",
        "_score": 0.08701137,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY MD"
          }
        }
      },
      {
        "_index": "emerge",
        "_type": "_doc",
        "_id": "hd1TKnMBojxRtp6H_I6_",
        "_score": 0.08701137,
        "_source": {
          "MDMGlobalData": {
            "Name1": "COASTAL EMERGENCY"
          }
        }
      },
      {
        "_index": "emerge",
        "_type": "_doc",
        "_id": "h91VKnMBojxRtp6HYI4e",
        "_score": 0.07223585,
        "_source": {
          "MDMGlobalData": {
            "Name1": "EMERGENCY MD X"
          }
        }
      }
    ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章