【发布时间】:2016-09-06 12:30:33
【问题描述】:
我正在为全文正文中可能包含任何特殊/保留字符的文档编制索引。例如 “PDF/A 是可移植文档格式的 ISO 标准化版本...”
我希望能够搜索pdf/a 而不必转义正斜杠。
我应该如何分析我的查询字符串以及我应该使用什么类型的查询?
【问题讨论】:
-
你能分享你尝试过的东西吗?作为起点,您的映射和查询是什么样的?
标签: elasticsearch
我正在为全文正文中可能包含任何特殊/保留字符的文档编制索引。例如 “PDF/A 是可移植文档格式的 ISO 标准化版本...”
我希望能够搜索pdf/a 而不必转义正斜杠。
我应该如何分析我的查询字符串以及我应该使用什么类型的查询?
【问题讨论】:
标签: elasticsearch
默认的standard 分析器将这样标记字符串,以便“PDF”和“A”是单独的标记。 “A”标记可能会被停止标记过滤器删除(请参阅Standard Analyzer)。因此,如果没有任何自定义分析器,您通常会得到任何只有“PDF”的文档。
您可以尝试创建自己的分析器,以 standard 分析器为模型,其中包括 Mapping Char Filter。这个想法是“PDF/A”可能会在索引和查询时转换为“pdf_a”之类的东西。一个简单的匹配查询就可以了。但这是一种非常简单的方法,您可能需要考虑如何在您的内容中使用“/”字符,并使用稍微复杂一些的正则表达式过滤器,这也不是完美的解决方案。
对不起,我完全错过了你关于必须逃避角色的观点。如果这根本没有帮助,您能否详细说明您的用例?
【讨论】:
为了支持包含保留字符的查询,我现在使用 Simple Query String Query (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html)
由于不使用查询解析器,它有点受限(例如,没有像 id:5 这样的字段查询),但它解决了目的。
【讨论】: