获取整个索引中的总词频(Elasticsearch)

我正在尝试计算特定术语在整个索引中出现的总次数(术语收集频率)。我试图通过使用术语向量来做到这一点,但是这仅限于单个文档。即使在指定文档中存在术语的情况下,响应似乎也达到了某个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限制为索引中文档的子集。

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

回答:

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

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

以上是 获取整个索引中的总词频(Elasticsearch) 的全部内容, 来源链接: utcz.com/qa/425565.html

回到顶部