我的ElasticSearch索引未正确索引和查询非字母数字字符。具体来说,点和短划线会导致问题。
如果我索引名为“O.K. Corral”的文档,它应匹配“OK Corral”的查询。同样,如果我将“Whiskey A Go-Go”编入索引,我希望它能与“Whiskey A GoGo”和“Whiskey A Go Go”相匹配。
现在,只有带正确点和短划线的查询才会返回这些文档。
我希望该解决方案还能解决其他非字母数字字符(如逗号和撇号)的任何潜在问题。
对于ElasticSearch令牌过滤器来说,这听起来像是一项工作,但我找不到能够满足我所需要的人的工作。另外,我想在ElasticSearch中执行此操作 - 我不想编写自定义字符串操作来在数据到达我的ES索引之前对其进行规范化。
感谢您的帮助!
答案 0 :(得分:7)
您可能想查看Word Delimiter Token Filter。它至少可以用“Whiskey A GoGo”和“Whiskey A Go-Go”来做你想做的事。您可以使用analyze api预先检查其行为。