我们在学习es过程中,难免会遇到一些们在学习es过程中,难免会遇到一些中国英文混合文档
这时我们如果使用ik ,虽然可以把英文分词,但是处理不了停用词(and ,is这种的),还有无法提取主干信息
比如 无法把students 提取为student 等
正常的是这样的:
解决,可以通过自定义分析器(analyzer)
分析器(无论是内置的还是自定义的)只是一个包,其中包含三个较低级别的构建块:tokenizer,filter和character filter。
可以理解为这样:
analyzer : {
tokenizer(1个)
filter(0-到多个)
characterfilter(0-多个)
}
下边是我的分析器
PUT /myanalyaz
{
"settings": {
"analysis": {
"filter": {
"german_stop": {
"type": "stop",
"stopwords_path":"analysis/stop.txt"
},"german_stemmer": {
"type": "stemmer",
"language": "light_english"
}
},
"analyzer" : {
"my_analyzer" : {
"tokenizer" : "ik_smart",
"filter" : [
"lowercase",
"german_stop",
"german_stemmer"
]
}
}
}
}
}
停止词文件内容:(一定要放到es 的config下)
前边两个标识,所有的英文和德文停止词,后边的自定义
测试
可以发现中文分词成功,students 也被提取主干了,停止词and 也没有存储