【问题标题】:elasticsearch - fulltext search for words with special/reserved characterselasticsearch - 全文搜索具有特殊/保留字符的单词
【发布时间】:2016-09-06 12:30:33
【问题描述】:

我正在为全文正文中可能包含任何特殊/保留字符的文档编制索引。例如 “PDF/A 是可移植文档格式的 ISO 标准化版本...”

我希望能够搜索pdf/a 而不必转义正斜杠。

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

【问题讨论】:

  • 你能分享你尝试过的东西吗?作为起点,您的映射和查询是什么样的?

标签: elasticsearch


【解决方案1】:

默认的standard 分析器将这样标记字符串,以便“PDF”和“A”是单独的标记。 “A”标记可能会被停止标记过滤器删除(请参阅Standard Analyzer)。因此,如果没有任何自定义分析器,您通常会得到任何只有“PDF”的文档。

您可以尝试创建自己的分析器,以 standard 分析器为模型,其中包括 Mapping Char Filter。这个想法是“PDF/A”可能会在索引和查询时转换为“pdf_a”之类的东西。一个简单的匹配查询就可以了。但这是一种非常简单的方法,您可能需要考虑如何在您的内容中使用“/”字符,并使用稍微复杂一些的正则表达式过滤器,这也不是完美的解决方案。

对不起,我完全错过了你关于必须逃避角色的观点。如果这根本没有帮助,您能否详细说明您的用例?

【讨论】:

    【解决方案2】:

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

    由于不使用查询解析器,它有点受限(例如,没有像 id:5 这样的字段查询),但它解决了目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多