elasticsearch,String,Normalization,elasticsearch" /> elasticsearch,String,Normalization,elasticsearch" />

String ElasticSearch错误地索引和查询非字母数字字符

String ElasticSearch错误地索引和查询非字母数字字符,string,normalization,elasticsearch,String,Normalization,elasticsearch,我的ElasticSearch索引未正确索引和查询非字母数字字符。具体来说,点和破折号会导致问题 如果我为一个名为“OK Corral”的文档编制索引,它应该匹配“OK Corral”的查询。类似地,如果我索引“威士忌A GoGo”,我希望它与“威士忌A GoGo”和“威士忌A GoGo”匹配 现在,只有带有正确点和破折号的查询才会返回这些文档 我希望这个解决方案也能解决其他非字母数字字符的潜在问题,比如逗号和撇号 这听起来像是ElasticSearch令牌过滤器的工作,但我还没有找到一个符合我

我的ElasticSearch索引未正确索引和查询非字母数字字符。具体来说,点和破折号会导致问题

如果我为一个名为“OK Corral”的文档编制索引,它应该匹配“OK Corral”的查询。类似地,如果我索引“威士忌A GoGo”,我希望它与“威士忌A GoGo”和“威士忌A GoGo”匹配

现在,只有带有正确点和破折号的查询才会返回这些文档

我希望这个解决方案也能解决其他非字母数字字符的潜在问题,比如逗号和撇号

这听起来像是ElasticSearch令牌过滤器的工作,但我还没有找到一个符合我所寻找的功能的。另外,我想在ElasticSearch中实现这一点——我不想在数据到达ES索引之前编写自定义字符串操作来规范化数据


谢谢你的帮助

您可能想看一下。它至少会做你想要的“威士忌果戈”和“威士忌围棋”。您可以提前使用。

查看word delimiter筛选器来检查其行为,它至少可以做一些您需要的事情。@javanna看起来word delimiter用破折号做了我想要的事情——现在它只是那些讨厌的点。谢谢很好,我只是添加了我的评论作为答案。事实证明,单词分隔符标记过滤器也解决了我的点问题。我必须记住的一件事是取下标准的标记器——如果已经取下了,字符串在到达过滤器之前就已经被标记了(在我的例子中是错误的)。但是通过使用空白标记器和正确配置的单词分隔符标记过滤器,我能够让一切正常工作。谢谢