elasticsearch - 全文搜索带有特殊/保留字符的单词

时间:2016-09-06 12:30:34

标签: elasticsearch

我正在索引可能在其fulltext主体中包含任何特殊/保留字符的文档。例如 " PDF / A是可移植文档格式的ISO标准化版本......"

我希望能够在不必逃避正斜杠的情况下搜索pdf/a

我应该如何分析我的查询字符串以及我应该使用哪种类型的查询?

2 个答案:

答案 0 :(得分:0)

默认的standard分析器会对这样的字符串进行标记,以便" PDF"和" A"是单独的令牌。 " A"令牌可能会被停止令牌过滤器切断(请参阅Standard Analyzer)。因此,如果没有任何自定义分析器,您通常只需使用" PDF"。

即可获得任何文档

您可以尝试创建自己的分析器,模拟standard分析器,其中包含Mapping Char Filter。这个想法是" PDF / A"可能会变成类似" pdf_a"在索引和查询时。一个简单的匹配查询将正常工作。但这是一种非常简单的方法,你可能想要考虑如何' /'在您的内容中使用了字符,并使用稍微复杂的正则表达式过滤器,这些过滤器也不是完美的解决方案。

对不起,我完全错过了关于逃避角色的观点。如果结果没有用,你能详细说明你的用例吗?

答案 1 :(得分:0)

要支持包含保留字符的查询,我现在使用 Simple Query String Query https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html

截至不使用查询解析器时,它有点受限(例如,没有id:5之类的字段查询),但它解决了目的。