我正在尝试计算特定术语在整个索引中出现的总次数(术语收集频率)。我试图通过使用术语向量来做到这一点,但是这仅限于单个文档。即使在指定文档中存在术语的情况下,响应似乎也达到了某个doc_count(在field_statistics之内)的最大值,这使我怀疑其准确性。
请求:
http://myip:9200/clinicaltrials/trial/AVmk-ky6XMskTDwIwpih/_termvectors?term_statistics=true
尽管术语统计不应该特定于文档,但此处使用的文档ID为“ AVmk-ky6XMskTDwIwpih”。
响应:
这是我对以下领域之一的术语“癌症”的理解:
"cancer" : { "doc_freq" : 5297, "ttf" : 10587, "term_freq" : 1, "tokens" : [ { "position" : 15, "start_offset" : 115, "end_offset" : 121 } ] },
如果将所有字段的ttf总计,则得到18915。但是,“ cancer”的实际总术语频率实际上是542829。这使我相信,它将term_vector stats限制为索引中文档的子集。
这里的任何建议将不胜感激。
计数不同的原因是,除非所讨论的索引具有单个分片,否则术语向量是不准确的。对于具有多个分片的索引,文档分布在所有分片上,因此返回的频率不是总数,而是来自随机选择的分片的频率。
因此,返回的频率只是一个相对的度量,而不是您期望的绝对值。请参阅“行为”部分。为了测试这一点,您可以创建一个分片索引并请求频率(它应该给您实际的总数)。