elasticsearch Elasticsearch中的合并令牌过滤器,elasticsearch,merge,concatenation,tokenize,elasticsearch,Merge,Concatenation,Tokenize" /> elasticsearch Elasticsearch中的合并令牌过滤器,elasticsearch,merge,concatenation,tokenize,elasticsearch,Merge,Concatenation,Tokenize" />

elasticsearch Elasticsearch中的合并令牌过滤器

elasticsearch Elasticsearch中的合并令牌过滤器,elasticsearch,merge,concatenation,tokenize,elasticsearch,Merge,Concatenation,Tokenize,我正在尝试在对一些标记进行词干分析并应用其他过滤器之后对它们进行索引。这些标签可以由多个单词组成 但我不想做的事情是应用一个最终的令牌过滤器,它从令牌流输出一个令牌 因此,我希望对由多个单词组成的标记进行词干分析,删除stopwords,然后在保存到索引中之前在同一个标记中再次连接(类似于关键字标记器所做的,但作为过滤器) 我发现在Elasticsearch中应用令牌过滤器的方式无法做到这一点:如果我在空格上标记,那么stem,所有后续的令牌过滤器将接收这些带词干的单个令牌,而不是整个令牌流,对

我正在尝试在对一些标记进行词干分析并应用其他过滤器之后对它们进行索引。这些标签可以由多个单词组成

但我不想做的事情是应用一个最终的令牌过滤器,它从令牌流输出一个令牌

因此,我希望对由多个单词组成的标记进行词干分析,删除stopwords,然后在保存到索引中之前在同一个标记中再次连接(类似于关键字标记器所做的,但作为过滤器)

我发现在Elasticsearch中应用令牌过滤器的方式无法做到这一点:如果我在空格上标记,那么stem,所有后续的令牌过滤器将接收这些带词干的单个令牌,而不是整个令牌流,对吗

例如,我想要标签

狐狸跳过篱笆

作为整个标记保存在索引中,如下所示:

狐狸跳过篱笆

而不是

狐狸,跳,越过,篱笆


有没有办法不在我的应用程序中对字符串进行预处理,然后将其作为未分析的字段进行索引?

经过一番研究,我发现了以下线索:

这正是我想要的解决方案

我创建了一个简单的Elasticsearch插件,它只提供连接令牌过滤器,您可以在以下位置找到:


提供最新答案,以防有人在寻找解决方案时遇到此问题。如果您的用例正在聚合,OP建议他们需要做什么:

有没有办法不在我的应用程序中预处理字符串,然后将其作为未分析的字段进行索引就可以做到这一点

实际上是解决这个问题的最佳方法,因为Elasticsearch使用
关键字
文本
类型进行映射,而不仅仅是
字符串
类型,并且建议在需要进行全文搜索的聚合用例中使用多个字段(一个
关键字
和一个
文本

在Elasticsearch的现代版本中,它甚至会拒绝在
文本
字段上执行聚合,除非在映射中将
字段数据
显式设置为
true
,警告您如果不使用多字段,将会遇到性能问题

Elasticsearch的现代版本还提供了将数据预处理到集群中多个字段的工具,如果在索引之前进行预处理会很困难()