如何在弹性搜索中获取整个索引的术语向量信息?而不是在文档级别

2024-01-09

根据弹性搜索文档,https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html,术语向量只能应用于文档。有什么方法可以在索引级别应用它。

我的用例是在应用英语停用词过滤器后计算添加到索引的所有文档中存在的字段(类型:字符串,基本上是一个句子)中所有 uni、bi 和 trigram 的频率。

Thanks.


使用术语向量存储文件中所有文档的一些统计数据shard(为什么不索引?...继续阅读)。

  • 总术语频率(术语在所有文档中出现的频率)
  • 文档频率(包含当前术语的文档数量)

要使其发挥作用,您必须为要分析的字段启用 term_vectors。最好通过添加来完成设置映射时将 term_vectors 添加到字段定义 https://www.elastic.co/guide/en/elasticsearch/reference/current/term-vector.html#term-vector因为计算是在索引时完成的,这可以加快术语向量检索的速度。

然后,在检索术语向量时,只需添加“term_statistics”参数,ttf 就会包含在输出中。看这个例子:

GET /twitter/_doc/1/_termvectors { "fields" : ["text"], "offsets" :true,“有效负载”:true,“位置”:true,“术语统计” : 真的,“field_statistics”:true }

但是,请注意,如果索引使用多个分片,则 term_vectors 和依赖于 term_vectors 的“更像这样”查询并不准确。说不是这样的! https://www.elastic.co/guide/en/elasticsearch/reference/5.4/docs-termvectors.html#_behaviour

术语和字段统计不准确。删除的文档是 没有考虑到。该信息仅针对 请求的文档所在的分片。术语和字段统计 因此,仅作为相对测量有用,而绝对测量 数字在这种情况下没有任何意义。

如果您想要准确的统计数据,则必须将索引设置为单个分片,这违背了使用弹性搜索的目的,因为您无法对单个分片进行集群。另一位 Stackoverflow 提交者也落入了这个陷阱。 https://stackoverflow.com/questions/41711305/getting-total-term-frequency-throughout-entire-index-elasticsearch?rq=1如果有人知道解决方案,请发帖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在弹性搜索中获取整个索引的术语向量信息?而不是在文档级别 的相关文章

随机推荐