我想知道是否有建议使用分析器/过滤器来索引/搜索人名。
可能造成困难的名称示例:
THX 马克
答案 0 :(得分:4)
这是一个分析器和过滤器,可以帮助您入门。很难涵盖所有案例,但asciifolding
过滤器将解决您使用François与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
}
}
通过定义同义词过滤器,您可以在您的语言中定义一个通常相似的名称列表(例如,在您的同义词文件中可能是François => Francois
这样的行),这将在短期内完成。
最后,带有pattern_replace
模式的"([A-Za-z]+)ae([A-Za-z]+)" => "$1a$2"
字符过滤器可以将所有Verhaeven
变为Verhaven
像...一样的东西。
"char_filter": {
"ae_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Za-z]+)ae([A-Za-z]+)",
"replacement": "$1a$2"
}
}
即使 Peter de Langhe与Peter delange 也可以使用pattern_replace
char过滤器解决:
"char_filter": {
"de_char_filter": {
"type": "pattern_replace",
"pattern": "([A-Za-z]+) de ([A-Za-z]+)",
"replacement": "$1 de$2"
}
}