当前位置: 首页 > 知识库问答 >
问题:

ElasticSearch nGram过滤掉标点符号

文彭祖
2023-03-14

在我的ElasticSearch数据集中,我们有用句点分隔的唯一ID。样本编号可能类似于C.123.5432

"settings" : {
    "index" : {
        "analysis" : {
            "analyzer" : {
                "my_ngram_analyzer" : {
                    "tokenizer" : "my_ngram_tokenizer"
                }
            },
            "tokenizer" : {
                "my_ngram_tokenizer" : {
                    "type" : "nGram",
                    "min_gram" : "1",
                    "max_gram" : "10",
                    "token_chars": [ "letter", "digit", "whitespace", "punctuation", "symbol" ]
                }
            }
        }
    }
},
"ProjectID":{"type":"string","store":"yes", "copy_to" : "meta_data"},

这就是我将其复制到的字段(它也有ngram分析器):

"meta_data" : { "type" : "string", "store":"yes", "index_analyzer": "my_ngram_analyzer"}

从某种意义上说,这是我用来查看搜索是否有效的命令(请注意它正在搜索“meta_data”字段):

GET /_search?pretty=true
{ 
    "query": {
        "match": {
            "meta_data": "c.123.54"
        }
    }
}

共有1个答案

司空祯
2023-03-14

s1monw在https://github.com/elasticsearch/elasticsearch/issues/5120的解决方案

通过使用index_analyzer,搜索只使用标准的分析器。为了修复它,我将index_analyzer修改为analyzer。请记住,结果的数量将大大增加,因此可能需要将min_gram更改为更高的数字。

 类似资料:
  • 任何一位jsoup大师都能告诉我一些将html过滤成文本/字符串的建议吗?我已尝试调用文档的text()。但所有标记/元素都将被过滤。我的目标是过滤一些指定的标记。 例如:我有HTML文本: 得到结果: 它已过滤标记。

  • 问题内容: 因为正则表达式使我感到恐惧,所以我试图找到一种方法来删除所有HTML标记并从Python中的字符串解析HTML实体。 问题答案: 使用lxml是最适合python的xml / html库。 如果您只想清理html,请查看lxml.html.clean模块

  • 问题内容: 我收到了一个调用返回的消息,已将套接字()作为目标传递给了该调用。可以预期的是,远程主机在它们受够了之后会简单地断开连接,而我不会从他们那里收到任何信息。 发生掉线时,出现以下错误: 但是我只有一个接口。我该如何区分折断的管道错误和其他类型的错误? 问题答案: 断开的管道错误在syscall软件包中定义。您可以使用相等运算符将错误与syscall中的错误进行比较。检查http://go

  • 问题内容: 我有一些要从json文件加载的html数据。 我通过在应用程序中使用ngSanitize并使用ng-bind-html来显示此html数据。 现在我想从标准转换json blob中的任何链接 至: 。 所以我在json文件上做了一些regExp来转换链接,但是出于某种原因,但是ng-bind-html过滤掉了ng- click的输出,我不知道为什么。是否应该这样做,如果可以,可以禁用此

  • 问题内容: 我要选择不是特定类后代的跨度,我们称其为“否”。这是我的CSS: 这是HTML 两个问题: 为什么我的CSS同时适用于是1和否2? 如果切换到通用选择器,为什么整个过程都会中断? 问题答案: 元素的两个父元素都不具有class ,无论其他祖先是否都具有class :

  • 原则 中文语句的标点符号,均应该采取全角符号,这样可以保证视觉的一致。 如果整句为英文,则该句使用英文/半角标点。 句号、问号、叹号、逗号、顿号、分号和冒号不得出现在一行之首。 句号 中文语句中的结尾处应该用全角句号(。)。 句子末尾用括号加注时,句号应在括号之外。 错误:关于文件的输出,请参照第 1.3 节(见第 26 页。) 正确:关于文件的输出,请参照第 1.3 节(见第 26 页)。 逗号