弹性搜索词频及其关系词频、弹性、关系

由网友(心、伤到哀凉)分享简介:我想知道是否有可能在整个索引或别名中获取Elasticearch字段中最常用的前十个单词。以下是我正在尝试做的事情:我正在索引从各种文档类型(Word、Powerpoint、PDF等)中提取的文本文档,这些文档将被分析并存储在名为docContent的字段中。我想知道是否有办法在特定索引中找到存储在文档内容字段中的最常...

我想知道是否有可能在整个索引或别名中获取Elasticearch字段中最常用的前十个单词。

以下是我正在尝试做的事情:

图解 权威专家解读 三新 及其相互关系

我正在索引从各种文档类型(Word、Powerpoint、PDF等)中提取的文本文档,这些文档将被分析并存储在名为docContent的字段中。我想知道是否有办法在特定索引中找到存储在文档内容字段中的最常用单词。

为了更清楚起见,我们假设我正在为来自Amazon和eBay的发票编制索引。现在让我们假设我有来自亚马逊的100张发票和来自eBay的20张发票。让我们还假设单词"Amazon"在每个Amazon发票中出现两次,单词"eBay"在每个eBay发票中出现3次。

现在,有没有办法得到一个集合,告诉我单词"Amazon"在我的索引中出现200次(100张发票x 2次/发票),单词"eBay"出现60次(20张发票x 3次/发票)。

我的另一个问题是,如果前者是可能的,那么有没有办法确定某个单词之后最频繁的单词是什么?

例如:假设我有100个文档。在这些文档中,60个文档包含术语"Old Cat",40个文档包含术语"Old Dog",为了便于论证,我们假设这些词在每个文档中只出现一次。

现在,如果我们可以得到单词"old"的频率,在我们的例子中应该是100。然后,我们能确定与紧随其后的单词的关系,从而拥有这样的东西吗:

               __________ Cat (60)
              |
Old (100)-----|
              |__________ Dog (40)

推荐答案

要获取词频,可以使用term vectors。但是,您首先必须存储它们,其次,您只能为给定文档检索它们。

据我所知,不可能对术语向量进行聚合。

也许您可以使用脚本化字段实现一些您想要的功能。但话又说回来,Groovy目前由于安全问题而不受欢迎,在脚本化字段上聚合可能会非常慢。

顺便提一下,以前也问过类似的问题:

Aggregate Terms Usage Count elasticsearch - Return term frequency of a single field
阅读全文

相关推荐

最新文章