gpt4 book ai didi

elasticsearch - 在 Elastic 搜索中推荐的人名分析器/过滤器是什么

转载 作者:行者123 更新时间:2023-11-29 02:45:38 25 4
gpt4 key购买 nike

我想知道是否有使用分析器/过滤器来索引/搜索人名的建议。

可能造成困难的名称示例:

  • 马克对马克
  • Peter de Langhe 与 Peter delange
  • Verhaeven 对 Verhaven
  • 弗朗索瓦对弗朗索瓦

谢谢马克

最佳答案

这是一个帮助您入门的分析器和过滤器。很难涵盖所有情况,但是 asciifolding 过滤器将解决您在 François vs Francois 情况下的问题。

在下面的示例中,它将保留原始结果,以便对 François 和 Francois 的查询将解析为相同的结果集。

        "analyzer": {
"name_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"trim",
"my_ascii_folding"
]
}
},
"filter": {
"my_ascii_folding" : {
"type" : "asciifolding",
"preserve_original" : true
}
}

Source

通过定义一个同义词过滤器,您可以用您的语言定义一个通常相似的名字列表(例如,在您的同义词文件中可能是像 François => Francois 这样的一行),这将在短期内。

最后是一个 pattern_replace 字符过滤器,带有 "([A-Za-z]+)ae([A-Za-z]+)"=> "$1a$2" 模式可以把所有的Verhaven 变成Verhaven

有点像...

        "char_filter": {
"ae_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Za-z]+)ae([A-Za-z]+)",
"replacement": "$1a$2"
}
}

甚至 Peter de Langhe vs Peter delange 也可以用 pattern_replace 字符过滤器解决:

        "char_filter": {
"de_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Za-z]+) de ([A-Za-z]+)",
"replacement": "$1 de$2"
}
}

关于elasticsearch - 在 Elastic 搜索中推荐的人名分析器/过滤器是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com