我正在开发一种识别类似文档的工具,并将其标记为重复文件。
为此,我使用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。
答案 0 :(得分:0)
我看到你要去的地方,但开箱即用,得分只与该特定查询相关,因为它全部基于术语频率和位置。因此该分数对于该查询的结果非常好,但从查询到查询无意义。所以,我只需将其包装在一个常数分数查询中。
如果您将每个术语放在自己的查询中,我可以提供一个可能在另一个bool查询中的bool查询中使用多个常量分数来解决此问题的示例。