0

我正在开发一种工具来识别类似文档并将它们标记为重复。

为此,我使用 ElasticSearch 来检查文档内容,以便 ElasticSearch 负责管理同义词和可能的拼写错误,但是我还没有提出可以达到我目标的查询。

到目前为止,我想出了这个查询:

{
 "query":{
    "filtered":{
       "query":{
          "more_like_this":{
             "fields":[
                "description"
             ],
             "like_text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
             "min_term_freq":1,
             "max_query_terms":999,
             "min_doc_freq":1
          }
       }
    }
 },
 "from":0,
 "size":999,
 "search_type": "dfs_query_then_fetch",
 "sort":[
    {
       "_score":{
          "order":"desc"
       }
    }
 ]
}

但似乎它给我的分数是相当随机的,我希望内容完全相等的分数为 100,而完全不同的分数为 0。

4

1 回答 1

0

我知道您要去哪里,但是开箱即用,评分仅与该特定查询相关,因为它完全基于术语频率和位置。因此分数对于该查询的结果非常有用,但从查询到查询毫无意义。所以,我会简单地将其包装在一个恒定分数查询中。

如果您不愿意将每个术语放在自己的查询中,我可以提供一个示例,可以在另一个 bool 查询中使用多个常量分数来解决这个问题。

于 2013-10-09T03:45:47.757 回答