我正在尝试找到从Elasticsearch _search结果中删除彼此太相似的文档的方法。
我已经检查过has_child,function_score和其他一些弹性功能,但似乎没有一个对我有帮助
GET /document/_search
{
"query": {
"term": {
"tags.name": {
"value": "sport"
}
}
}
}
例如,我在应用程序中使用上面的查询,该查询返回标签名称中包含sport的所有文档。问题是结果可能包含太多与特定领域相关的文件,例如足球,如果我已经有了与足球相关的文件,那么我想弹性删除以下相似率超过90%的文件。
更新
每个文档都包含标题,摘要,内容和标签列表。例如,我已经有这样的查询来查找与特定文档相似但不太相似的文档。现在我也想从其他Elastisesach查询结果中删除过于相似的文档。
GET /document/_search
{
"size": 30,
"query": {
"bool": {
"should": [
{
"more_like_this": {
"fields": [
"content"
],
"like": [
{
"_index": "document",
"_id": 2585099
}
],
"min_term_freq": 1,
"boost": 5
}
},
{
"more_like_this": {
"fields": [
"summary",
"description",
"title"
],
"like": [
{
"_index": "document",
"_id": 2585099
}
],
"min_term_freq": 1,
"boost": 2
}
}
],
"must_not": [
{
"more_like_this": {
"fields": [
"summary",
"description",
"title"
],
"like": [
{
"_index": "document",
"_id": 2585099
}
],
"min_term_freq": 1,
"boost": 10,
"minimum_should_match": "70%"
}
}
],
"minimum_should_match": 1
}
}
}