使用ElasticSearch我尝试使用minimum_should_match
上的Terms Query
选项来查找long
列表X%
与long
类似的文档{
"filter": {
"fquery": {
"query": {
"terms": {
"mynum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 13],
"minimum_should_match": "90%",
"disable_coord": False
}
}
}
}
}
我查询的列表。
e.g:
mynum
将匹配两个带有[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
列表的文档:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12]
和
10
这是正确的,因为第一个文档末尾有13
,而查询包含11
而第二个文档包含13
,其中查询包含90%
{1}}。
这意味着我的查询列表中的10个数字中的1个在返回的文档中是不同的,并且相当于查询中允许的minimum_should_match
相似度(11
)值。
现在我遇到的问题是我希望这种行为在某种意义上是不同的,因为第二个文件更长并且有11个数字代替10,所以理想情况下差异水平应该更高,因为它实际上不在查询列表中的两个值12
和(list1) [1, 2, 3, 4, 5, 6, 7, 8, 9, 13]
。 e.g:
而不是计算交叉点:
(list2) [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12]
使用:
10%
这是list2
差异
应该说,由于list1
长于(list2) [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12]
,因此交叉点应为:
(list1) [1, 2, 3, 4, 5, 6, 7, 8, 9, 13]
使用:
12%
这是[1, 2, 3, 4, 5, 6, 7, 8, 9, , , , 13]
差异
[1, 2, 3, 4, 5, 6, 7, 8, 9, 13]
而不是:
{{1}}