当前位置: 首页 > 知识库问答 >
问题:

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

林和畅
2023-03-14

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

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

谢谢。

共有1个答案

仉运乾
2023-03-14

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

    < li >总术语频率(一个术语在所有文档中出现的频率) < li >文档频率(包含当前术语的文档数量)

要使其工作,您必须为要分析的字段启用term_vectors。这最好通过在设置映射时向字段定义添加term_vectors来完成,因为计算是在索引时完成的,这可以加快术语向量检索。

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

GET/twitter/doc/1/termvectors{“字段”:[“text”],“偏移量”:true,“有效载荷”:真,“位置”:真

但是,请注意,如果索引使用多个分片,term_vectors和依赖于term_vectors的“更像这样”查询是不准确的。说不是这样!

术语和字段统计不准确。不考虑已删除的文档。只为请求的文档所在的碎片检索信息。因此,术语和字段统计仅作为相对度量有用,而绝对数字在这种情况下没有意义。

如果需要准确的统计信息,必须将索引设置为单个碎片,这就违背了使用弹性搜索的目的,因为无法对单个碎片进行聚类。另一个Stackoverflow提交程序落入了这个陷阱。如果有人知道解决方案,请发帖。

 类似资料:
  • 这是我的ES查询: ==创建索引=== ===插入数据=== ==获取结果的查询=== ==检索到的结果=== ==期望结果=== 所需术语按文档搜索术语的频率,如下所示 我尝试过Bucket聚合、Terms聚合和其他聚合,但没有得到这个结果。 提前谢谢你的帮助!

  • 我目前正在使用elasticsearch,并试图从Java后端实现一个查询,该查询不仅按术语而且按字段优先级从索引中查询文档。在我的索引中,我的文档包含一个术语和一个指定类型的字段。 我创建了一个按术语搜索的查询,弹性索引将返回匹配该术语的最相关的结果。我想要创建的功能是创建一个查询,以返回匹配同一项的结果,但按“type”字段的优先级排序。例如,当我输入“flu”时,我希望首先获得类型为“pro

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • Lucene提到- 但是我们可以通过IndexWriter.setMaxFieldLength(int)对其进行配置。 我在ElasticSearch-http://localhost:9200/twitter中创建了一个索引,并发布了一个包含40,000个术语的文档。 映射- 我用message字段索引了一个文档,有40,000个术语-message:“text1text2....text400

  • 当跨多个索引进行搜索时,elasticsearch的“多重匹配”查询将返回搜索结果中的索引名称。 响应包含字段,该字段告诉结果来自的索引 spring-data-elasticsearch中用于的类是和具有字段、、用于获取与elasticsearch查询相似的数据。但它不包含用于存储字段信息的相关字段。 还支持吗?我需要根据哪个客户端应用程序将生成一些URL发送搜索命中类型(name)。 这是我使

  • 如何仅在工作区的一个子文件夹中搜索? CTRL SHIFT F在整个工作区中搜索,并且由于它很大,我在不相关的文件夹和文件中获得了太多的命中。