ElasticSearch:minimum_should_match和术语长度列表

时间:2015-07-08 20:16:52

标签: elasticsearch intersection pyelasticsearch

使用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] 差异

  • 这可能吗?
  • 如果没有,除了使用密集的向量而不是稀疏的向量之外,我怎么能在列表的长度上加权呢? e.g:
使用

[1, 2, 3, 4, 5, 6, 7, 8, 9, 13]

而不是:

{{1}}

0 个答案:

没有答案
相关问题