搜索结果和方面结果不匹配

时间:2014-01-10 14:44:01

标签: filter elasticsearch facets

我正在phrase_prefix搜索“工程师”,我在“技能”字段方面获得36项计算“工程”。接下来,我在“工程”的该方面字段上应用term filter,现在在新的过滤结果中,方面中“工程”的计数为42。

过滤后的查询返回42个结果,每个结果都与构面匹配,也就是说,它们都包含“工程”作为技能。

所以我希望未过滤的查询对'技能'方面的'工程'术语有42个计数,但正如我上面提到的那样只有36个。

这是映射和查询 https://gist.github.com/santiago/a249418e5bf7531ead85

我在这里缺少什么?

由于

PD。我正在使用0.90.5

1 个答案:

答案 0 :(得分:0)

在0.90.5中,您可以通过增加构面列表的大小来获得预期的结果:

  "facets": {
    "skills": {
      "terms": {
        "field": "skills",
        "size": 50
      }
    },

Elasticsearch docs on term facets

中解释了导致结果不准确的原因以及为什么增加尺寸有帮助的原因
  

size参数定义应返回多少顶级术语   整体条款清单。默认情况下,节点协调   搜索过程会要求每个分片提供自己的最大尺寸条款   一旦所有分片响应,它将把结果减少到最终   然后将列表发送回客户端。这意味着,如果   唯一术语的数量大于大小,返回的列表是   稍微偏离并且不准确(可能是术语计数是   略微偏离它甚至可能是一个应该存在的术语   没有返回最大尺寸的条目。)

在0.9.6+中,您可以在构面中添加shard_size参数,告诉它在将结果合并到一个列表之前从每个分片请求的条件数。