Elasticsearch词的频率和关系

时间:2015-05-04 05:50:19

标签: elasticsearch frequency tf-idf

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

这是我正在尝试做的事情:

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

为了更清楚,我们假设我正在索引来自亚马逊和eBay的发票。现在让我们假设我有来自亚马逊的100张发票和来自易趣的20张发票。让我们假设每个亚马逊发票中出现两次“亚马逊”一词,每个易趣发票中出现“ebay”一词三次。

现在,有没有办法得到排序的汇总,告诉我“亚马逊”这个词在我的索引中出现200次(100张发票x 2次/发票),“ebay”这个词出现60次(20次)发票x 3次/发票)。

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

例如:假设我有100个文件。其中60个文件包含“老猫”一词,40个包含“老狗”一词,为了便于论证,我们假设这些词只出现在每个文件中一次。

现在,如果我们可以得到单词“old”的频率,在我们的例子中应该是100.然后我们可以确定与它之后的单词的关系,得到类似的东西:

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

1 个答案:

答案 0 :(得分:3)

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

据我所知,它不可能聚合​​超长期向量。

也许你可以使用脚本字段实现一些你想要的东西。但话说回来,Groovy目前因为安全问题而受到歧视,而且对脚本字段的聚合可能非常缓慢。

顺便提一下,之前曾提出过类似的问题: