在分析alpha 1a beta
时,我希望令牌的结果为[alpha 1 a beta]
。为什么myAnalyzer
没有做到这一点?
POST myindex
{
"settings" : {
"analysis" : {
"analyzer" : {
"myAnalyzer" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : [ "split_on_numerics" ]
}
},
"filter" : {
"split_on_numerics" : {
"type" : "word_delimiter",
"split_on_numerics" : true,
"split_on_case_change" : false,
"generate_word_parts" : false,
"generate_number_parts" : false,
"catenate_all" : false
}
}
}
}
}
现在我跑
GET /myindex/_analyze?analyzer=myAnalyzer&text=alpha 1a beta
没有返回令牌。再次,为什么?
答案 0 :(得分:8)
要在自定义word-delimiter过滤器中实现此目的,您需要设置"generate_word_parts" : true
和"generate_number_parts" : true
。
这实质上确保了分割时的“字母数字标记”应该生成其数字和单词部分。
示例过滤器如下:
{
"settings" : {
"analysis" : {
"analyzer" : {
"myAnalyzer" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : [ "split_on_numerics" ]
}
},
"filter" : {
"split_on_numerics" : {
"type" : "word_delimiter",
"split_on_numerics" : true,
"split_on_case_change" : false,
"generate_word_parts" : true,
"generate_number_parts" : true,
"catenate_all" : false
}
}
}
}
}
如果您希望将原始字词"1a"
编入索引,则需要设置
preserve_original : true
要编入索引