各位伙伴好,场景如下:
我现在有一个字段,这个字段可能存储汉字、也可能存储英文字母、数字或它们的组合,我现在使用的是ik_smart,它可以比较好的对付中文,但是对于英文,它基本上是按ES默认的lowercase把英文全部转成小写了。
但是我的查询,对大小写是敏感的,所以有没有什么办法,既可以保留对中文的较好切分,又可以针对英文,唯独禁用小写转化呢(其他的诸如按照空格切这种默认的还是得保留)?
我现在的办法是使用multi fileds,大小写敏感的时候就查keyword,但是总觉得这样挺麻烦,有没有能在索引阶段,通过添加过滤这种方式解决的办法呢?
祝各位身体健康、工作顺利!
我现在有一个字段,这个字段可能存储汉字、也可能存储英文字母、数字或它们的组合,我现在使用的是ik_smart,它可以比较好的对付中文,但是对于英文,它基本上是按ES默认的lowercase把英文全部转成小写了。
但是我的查询,对大小写是敏感的,所以有没有什么办法,既可以保留对中文的较好切分,又可以针对英文,唯独禁用小写转化呢(其他的诸如按照空格切这种默认的还是得保留)?
我现在的办法是使用multi fileds,大小写敏感的时候就查keyword,但是总觉得这样挺麻烦,有没有能在索引阶段,通过添加过滤这种方式解决的办法呢?
祝各位身体健康、工作顺利!
2 个回复
bellengao - 博客: https://www.jianshu.com/u/e0088e3e2127
赞同来自: yeziblo
"settings": {
"analysis": {
"analyzer": {
"my_ik": {
"type": "ik_smart",
"enable_lowercase": false
}
}
}
}
}
基于ik_smart自定义analyzer, 同时配置参数 "enable_lowercase": false
bellengao - 博客: https://www.jianshu.com/u/e0088e3e2127
赞同来自: yeziblo
"settings": {
"analysis": {
"char_filter": {
"charfilter1": {
"type": "mapping",
"mappings": [
": => -"
]
}
},
"tokenizer": {
"ik_tokenizer": {
"type": "ik_smart",
"enable_lowercase": false
}
},
"analyzer": {
"my_ik": {
"tokenizer": "ik_tokenizer",
"char_filter": [
"charfilter1"
]
}
}
}
}
}