我正在索引可能在其fulltext主体中包含任何特殊/保留字符的文档。例如 " PDF / A是可移植文档格式的ISO标准化版本......"
我希望能够在不必逃避正斜杠的情况下搜索pdf/a
。
我应该如何分析我的查询字符串以及我应该使用哪种类型的查询?
答案 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
之类的字段查询),但它解决了目的。