search - 如何获得 Elasticsearch 以在尖括号内返回结果?

标签 search elasticsearch analyzer

我是 flex 搜索的新手。我正在尝试修复搜索,以便用户可以搜索html标记内的内容。当前,我们正在使用空白 token 生成器,因为我们需要它来返回带连字符名称的结果。因此,aname123-suffix project被索引为["aname123-suffix", "project"],并且用户搜索"aname123-*"会返回正确的结果。

出现我的问题是因为我们还希望能够搜索html标记内的内容。因此,例如对于一个名为<aname123>-suffix project的项目,我们希望能够输入搜索词<aname123>-*并获取正确的结果。

该索引具有用于空白标记器的正确标记,即["<aname123>-suffix", "project"],但是当我的搜索字符串是"\<aname123\>\-suffix""\\<aname123\\>\\-suffix"时, flex 搜索不会返回任何结果。

我认为解决方案在于

  • 修改搜索字符串,以便 flex 搜索在我要求时返回<aname123>-suffix;或
  • 能够将标签内的内容与空白标记分开索引,即["<aname123>-suffix", "project", "aname123", "suffix"]

  • 到目前为止,我一直在通过更改索引来实现这一目标,但尚未成功。标准 token 生成器将允许在标签内搜索内容的结果,但是无法返回aname123-*的搜索结果。目前,我的分析仪设置如下所示:
    {  "analysis":
             { "analyzer":
                  { "my_whitespace_analyzer" :
                      {"type": "custom"
                            {"tokenizer": "whitespace},
                            {"filter": ["standard", "lowercase", "stop"]}
                      }
                  },
                  { "my_tag_analyzer":
                      {"type": "custom"
                            {"tokenizer": "standard"},
                            {"filter": ["standard", "lowercase", "stop"]}
                       }
                   }
               }
     }
    

    我可以创建一个自定义的char过滤器,以除去<和>,因此索引包含aname123;但是由于某种原因,在<aname123>*上进行搜索时, flex 搜索仍然无法返回正确的结果。但是,当我改用标准分析器时,索引包含aname123并返回<aname123>*的预期结果... flex 搜索中的尖括号有什么特别之处?

    最佳答案

    您可能需要看一下html_strip字符过滤器:

    https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-htmlstrip-charfilter.html

    来自其中一名Elasticsearch开发人员的示例如下:

    https://gist.github.com/clintongormley/780895

    关于search - 如何获得 Elasticsearch 以在尖括号内返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711611/

    相关文章:

    ios - 单例设计潜在泄漏

    c# - 如何在没有 nuget 或 VSIX 的情况下向项目添加自定义代码分析器?

    php - 可变长度正则表达式回顾

    elasticsearch - 容器化WebApp的日志不会通过Serilog.Sinks.Elasticsearch发送到Elasticsearch

    elasticsearch - 为什么Linux进程中的xms xmx数量与elasticsearch统计信息不同?

    elasticsearch - 在 Elasticsearch 中转义正斜杠

    Lucene 2.2 阿拉伯语分析器

    PHP使用通配符搜索数组?

    search - 在 Plone 中针对特定内容类型自定义搜索 portlet

    即使搜索 "exact name",Android 应用程序也不会出现在 Google Play 的首页中