【问题标题】:ElasticSearch incorrectly indexing and querying on non-alphanumeric charactersElasticSearch 错误地索引和查询非字母数字字符
【发布时间】:2012-08-23 12:47:23
【问题描述】:

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

如果我索引一个名为“O.K. Corral”的文档,它应该匹配“OK Corral”的查询。同样,如果我索引“Whiskey A Go-Go”,我希望它匹配“Whiskey A GoGo”和“Whiskey A Go Go”。

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

我希望该解决方案还能解决其他非字母数字字符(如逗号和撇号)的任何潜在问题。

这听起来像是 ElasticSearch 令牌过滤器的工作,但我一直无法找到符合我要求的工作。另外,我想在 ElasticSearch 中执行此操作——我不想在数据到达我的 ES 索引之前编写自定义字符串操作来规范化数据。

感谢您的帮助!

【问题讨论】:

  • 看看单词分隔符过滤器,它至少应该做一些你需要的事情。
  • @javanna 看起来单词分隔符用破折号做我想要的——现在它只是那些讨厌的点。谢谢!
  • 太好了,我刚刚添加了我的评论作为答案。

标签: string normalization elasticsearch


【解决方案1】:

您可能想看看Word Delimiter Token Filter。它至少可以用“Whiskey A GoGo”和“Whiskey A Go-Go”做你想做的事。您可以使用analyze api 提前检查其行为。

【讨论】:

  • 事实证明,单词分隔符标记过滤器也处理了我的点问题。我必须记住的一件事是取消标准标记器——如果它到位,则字符串在到达过滤器之前已经被标记(在我的情况下不正确)。但是通过使用空格标记器和正确配置的单词分隔符标记过滤器,我能够让一切正常工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多