i_l*_*hos 3 tokenize elasticsearch
分析时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
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我跑的时候
GET /myindex/_analyze?analyzer=myAnalyzer&text=alpha 1a beta
Run Code Online (Sandbox Code Playgroud)
没有令牌返回.再次,为什么?
要在自定义单词定界符过滤器中实现此目的,需要设置"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
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您希望将原始术语 "1a"
编入索引,则需要进行设置
preserve_original : true
Run Code Online (Sandbox Code Playgroud)
被索引一个
归档时间: |
|
查看次数: |
3168 次 |
最近记录: |