我将索引可能在其全文本体中包含任何特殊/保留字符的文档。例如 “PDF/A是可移植文档格式的ISO标准化版本...”elasticsearch - 全文搜索带有特殊/保留字符的单词
我希望能够搜索pdf/a
而不必转义正斜杠。
我应该如何分析我的查询字符串以及我应该使用哪种类型的查询?
我将索引可能在其全文本体中包含任何特殊/保留字符的文档。例如 “PDF/A是可移植文档格式的ISO标准化版本...”elasticsearch - 全文搜索带有特殊/保留字符的单词
我希望能够搜索pdf/a
而不必转义正斜杠。
我应该如何分析我的查询字符串以及我应该使用哪种类型的查询?
为了支持含有保留字符我现在使用的Simple Query String Query
(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html)
作为不使用查询解析器它是有点有限的(例如,没有场的查询等id:5
)查询,但它解决了目的。
默认的standard
分析器将标记一个这样的字符串,以便“PDF”和“A”是单独的标记。 “A”令牌可能会被停止令牌过滤器截断(请参阅Standard Analyzer)。因此,如果没有任何自定义分析仪,您通常只会收到任何带有“PDF”的文档。
您可以尝试使用standard
分析仪创建您自己的分析仪,其中包含Mapping Char Filter。这个想法可能会在索引和查询时间将“PDF/A”转换为“pdf_a”之类的东西。一个简单的匹配查询就可以正常工作。但这是一个非常简单的方法,您可能想考虑如何在内容中使用“/”字符,并使用稍微复杂的正则表达式过滤器,这也不是完美的解决方案。
对不起,我完全错过了你必须逃避角色的观点。如果事实证明这对你没有帮助,你能否详细说明你的用例?
你可以分享你的尝试?你的映射和查询看起来是什么样的起点? – eemp