首页 > 解决方案 > 具有不同标记位置/偏移的模式捕获

问题描述

来自弹性搜索文档

注意:所有标记都在相同的位置发出,并且具有相同的字符偏移量。这意味着,例如,使用此分析器的 john-smith_123@foo-bar.com 的匹配查询将返回包含任何这些标记的文档,即使使用 and 运算符也是如此。此外,当与突出显示结合使用时,将突出显示整个原始标记,而不仅仅是匹配的子集。例如,在上述电子邮件地址中查询“smith”会突出显示: https ://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-capture-tokenfilter.html

有没有办法生成具有不同位置/偏移量的令牌?

鉴于弹性搜索提供的示例,我希望能够在comAND上进行搜索,john但据我了解,它将匹配包含comjohn因为它们将被视为相同位置的所有电子邮件。

(在我的情况下,我想这样做以进行代码分析,与他们给出的 2 秒示例非常相似)

      "analysis" : {
         "filter" : {
            "code" : {
               "type" : "pattern_capture",
               "preserve_original" : true,
               "patterns" : [
                  "(\\p{Ll}+|\\p{Lu}\\p{Ll}+|\\p{Lu}+)",
                  "(\\d+)"
               ]
            }
         },

标签: elasticsearchsearchindexing

解决方案


我不完全理解您的问题,但看起来您正在尝试做的是:确保索引标记器按照您的预期破坏输入,这意味着有一个“com”标记和“john”标记。您可以通过运行分析请求来检查标记器:https ://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html

在输入按预期进行分析和标记后,您可以运行 John AND com 查询,它应该按预期工作。


推荐阅读