当前位置: 首页 > 面试题库 >

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

姬念
2023-03-14
问题内容

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

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


问题答案:

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

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



 类似资料:
  • 问题内容: 我有大量的实际文本,需要将单词拉出来以输入到拼写检查器中。我想尽可能多 地 提取 有意义的 单词,而不会产生太大干扰。我知道这附近有很多正则表达式忍者,所以希望有人可以帮助我。 目前,我正在使用提取所有字母序列。这是一个很好的近似值,但是它却拖走了很多垃圾。 理想情况下, 我想要一些正则表达式(不一定漂亮或高效),该正则表达式提取由自然词分隔符(例如,等等)定界的所有字母序列,并忽略任

  • 问题内容: 考虑: 我该怎么做: 显然,这不起作用,因为第一个索引名为,而不是。 可以,但是我不知道它的名字叫foo。它可以命名为任何东西。我只想要第一个。 问题答案: 如果对象的顺序很重要,则应修改JSON模式以将对象存储在数组中: 或许: 正如Ben Alpert指出的那样,Javascript对象的属性是无序的,并且如果希望它们按与对象常量中指定的顺序相同的顺序枚举,则代码将被破坏-没有“f

  • 我知道如何通过谓词查找列表的第一个元素:Java8通过谓词查找第一个元素 有没有一种简单的方法可以得到那个元素的索引? 编辑:链接的问题确实提供了答案,但我在搜索时找不到它,因为它的措辞。因此,我宁愿保留这个问题。

  • 问题内容: 例如,假设一个简单的数据框 给定条件,如何检索行的索引值?例如: return ,但是我想得到的只是just 。这在以后的代码中给我带来麻烦。 基于某些条件,我想记录满足该条件的索引,然后在它们之间选择行。 我试过了 获得所需的输出 但我明白了 问题答案: 添加起来更容易-使用一个元素选择list的第一个值: 但是,如果某些值不匹配,则会出现错误,因为第一个值不存在。 解决方案是使用与