Py学习  »  Elasticsearch

计算Elasticsearch 7中单个文档中文本字段中每个单词的频率

Cogicero • 3 年前 • 435 次点击  

使用Elasticsearch,是否有一种有效且相对便宜的方法来统计单个文档中每个单词的出现次数(包括停止词)?单词在a中 文本字段 ,不是关键字字段(无法更改)。假设我有以下文档:

"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"

然后我希望得到以下结果:

quia 4
qui 4
voluptatem  4
ut  3
sit 3
velit   2
sed 2
consequatur 2
vel 2
ea  2
enim    2
et  2
voluptas    2
eum 2
aut 2
dolorem 2
ullam   1
eos 1
explicabo   1
commodi 1

(etc. Truncated for brevity)

我已经在使用Elasticsearch php客户端为Elasticsearch 7.10中的每个文档编制索引。我正在寻找一种有效的方法 计算每个文档中每个单词的出现次数 (不是整个索引,也不是 穿过 文档)。这似乎是一个简单的用例,所以我猜应该有一种简单的方法来实现这一点,因为每个文档都已经被索引以便搜索。

在我的研究中 term vectors 但据说它会对性能产生严重影响,这是有道理的,因为它正在做很多我不需要的事情,比如在多个文档中聚合术语,决定哪些单词不“有趣”,等等。在我的用例中,我甚至想计算停止词或填充词(如“a”、“the”等)的出现次数。

有许多未回答的问题,例如:。 https://discuss.elastic.co/t/phrase-frequency-in-a-document-and-in-the-whole-collection/61616/2 -但这些是更复杂的用例,例如短语、或“无停止词”、或跨文档搜索等。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/136472
 
435 次点击