特殊字符会影响分词效果,需要特殊字符过滤,优化匹配,所以需要修改mapping增加 char_filter 过滤。
“analysis”: {
“filter”: {
},
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"# u003du003e ",
"u0026 u003du003e ",
"+ u003du003e ",
"- u003du003e ",
"_ u003du003e ",
". u003du003e ",
"@ u003du003e "
]
}
},
}
通过head 修改tpl 文件 需求对 空格u0020 进行转义 增加 ,使用
$ = > \u0020
才可以生效( 已存在的索引文件 生效需要reindex 重新生成后才可以生效);
然后再 对应需要使用char_filter 的位置 使用
“ik_ik_smart”: {
“filter”: [
“ik_synonym”
],
“char_filter”: [
“my_char_filter”
],
“type”: “custom”,
“use_smart”: “true”,
“tokenizer”: “ik_smart”
},
重跑前 重跑后 可以使用analyze api 指定分词器和 内容进行测试
例如:将# 通过char_filter 替换为 空格。分词结果如下



