我正在尝试计算特定术语在整个索引(术语收集频率)中出现的总次数。我试图通过使用术语 vector 来做到这一点,但是这仅限于单个文档。即使在指定文档中存在术语的情况下,响应似乎也达到了某个doc_count的最大值(在field_statistics之内),这使我怀疑其准确性。

请求:

http://myip:9200/clinicaltrials/trial/AVmk-ky6XMskTDwIwpih/_termvectors?term_statistics=true

尽管术语统计不应该特定于文档,但此处使用的文档ID为“AVmk-ky6XMskTDwIwpih”。

响应:

这是我对以下 Realm 之一的术语“癌症”的理解:
 "cancer" : {
      "doc_freq" : 5297,
      "ttf" : 10587,
      "term_freq" : 1,
      "tokens" : [
        {
          "position" : 15,
          "start_offset" : 115,
          "end_offset" : 121
        }
      ]
    },

如果将所有字段的ttf总计,则会得到18915。但是,“癌症”的实际总术语频率实际上是542829。这使我相信,它将term_vector stats限制为索引内文档的子集。

这里的任何建议将不胜感激。

最佳答案

计数不同的原因是,除非所讨论的索引具有单个分片,否则术语 vector 是不准确的。对于具有多个分片的索引,文档分布在所有分片上,因此返回的频率不是总数,而是来自随机选择的分片的频率。

因此,返回的频率只是一个相对的度量,而不是您期望的绝对值。 see the Behaviour section
为了测试这一点,您可以创建一个分片索引并请求频率(它应该给您实际的总数)。

07-24 09:39
查看更多