0

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

"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 中为每个文档编制索引。我正在寻找一种有效的方法来计算每个文档中每个单词的出现次数(不是整个索引,也不是文档)。这似乎是一个简单的用例,所以我猜应该有一种简单的方法可以做到这一点,因为每个文档都已经被索引以供搜索。

在我的研究中,我遇到了术语向量,但据说它会对性能产生严重影响 - 这是有道理的,它可以做很多我不需要的事情,例如聚合多个文档中的术语,决定哪些词不是“有趣”等。在我的用例中,我什至想计算停用词或填充词(如“a”、“the”等)的出现。

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

4

0 回答 0