elasticsearch 使用Elasticsearch asciifolding忽略特定字符
在我的分析器中,我添加了asciifolding过滤器。在大多数情况下,这非常有效,但在使用丹麦语时,我不想规范æå字符,因为“rød”和“rod”是非常不同的单词 我们使用的是托管的弹性云集群,因此如果可能的话,我们需要一个不需要通过云平台进行任何非标准部署的解决方案 是否有任何方法可以进行ascifolding,但将某些字符列为白名单
elasticsearch 使用Elasticsearch asciifolding忽略特定字符,
elasticsearch,elastic-cloud,
elasticsearch,Elastic Cloud,在我的分析器中,我添加了asciifolding过滤器。在大多数情况下,这非常有效,但在使用丹麦语时,我不想规范æå字符,因为“rød”和“rod”是非常不同的单词 我们使用的是托管的弹性云集群,因此如果可能的话,我们需要一个不需要通过云平台进行任何非标准部署的解决方案 是否有任何方法可以进行ascifolding,但将某些字符列为白名单 当前在ES版本6.8上运行,因为您已经使用了,但它是一个令牌过滤器,因此它确实无法过滤掉某些字符,因为分析过程由以下三个连续步骤组成: 字符过滤器(这里您可以
当前在ES版本6.8上运行,因为您已经使用了,但它是一个令牌过滤器,因此它确实无法过滤掉某些字符,因为分析过程由以下三个连续步骤组成:
因此,在同一本书及其建议中,为不同字段中的原始含义编制索引,然后对大多数字段使用多匹配查询,更多信息可在中找到。您可能应该使用ICU折叠标记过滤器 从: 基于UTR#30的Unicode字符大小写折叠,如 类固醇上的ASCII折叠令牌过滤器 它允许您执行AsciiFolding筛选器所执行的所有操作,但除此之外,它还允许您通过unicodeSetFilter属性忽略一系列字符 在本例中,您希望忽略æ,å,Æ,Ø,Ø:
"unicodeSetFilter": "[^æøåÆØÅ]"
完整示例:
PUT icu_sample
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"danish_analyzer": {
"tokenizer": "icu_tokenizer",
"filter": [
"danish_folding",
"lowercase"
]
}
},
"filter": {
"danish_folding": {
"type": "icu_folding",
"unicodeSetFilter": "[^æøåÆØÅ]"
}
}
}
}
}
}
这看起来非常有希望,并且AnalysisICU插件在云平台上是标准的。我会试试这个,我肯定它会帮你解决的。如果您希望其他斯堪的纳维亚国家能够使用他们自己的ö/ø、ä/æ等版本查找您的内容,而不破坏特殊字符的含义,我也可以推荐“斯堪的纳维亚ä正常化”过滤器()。@mortenbook,您能解决您的问题吗?