ES-同义词配置
同义词搜索的配置
PUT test_index
{
“settings”: {
“number_of_shards”: 1,
“analysis”: {
“filter”: {
“my_synonym_filter”:{
“type”:“synonym”,
“synonyms_path”:“analysis /synonym.txt”
}
},
“analyzer”: {
“ik_syno”:{
“type”:“custom”,
“tokenizer”:“ik_smart”,
“filter”:[“my_synonym_filter”]
},
“ik_syno_max”:{
“type”:“custom”,
“tokenizer”:“ik_max_word”,
“filter”:[“my_synonym_filter”]
}
}
}
},
“mappings”: {
“doc”:{
“properties”: {
“item_name”:{
“type”: “text”,
“analyzer”: " ik_max_word ",
“search_analyzer”: “ik_syno”
}
}
}
}
}
加数据
- POST test_index/doc
- {
- “item_name”:“对违反出租车运营规定的处罚”
- }
- POST test_index/doc
- {
- “item_name”:“出租汽车经营者不按照规定配置出租汽车相关设备”
- }
测试
- GET test_index/doc/_search
- {
- “query”: {
-
"match": {
-
"item_name": "出租汽车"
-
}
- }
- }
- GET test_index/doc/_search
- {
- “query”: {
-
"match": {
-
"item_name": "出租车"
-
}
- }
- }
同义词和扩展词库配置的注意要点:
1、 mapping中analyzer要设置默认的ik_max_word,用来分词建立索引,
不要用ik_syno_max,搜索时会命中奇怪的词,应该是建立索引时有问题。
2、 在搜索时要用ik_syno或者ik_syno_max 他会使用同义词字典来去检索
前提条件是同义词字典中的每一个词都必须要在IK的分词字典中存在(默认和扩展)才能命中。
配置步骤为:
1、 确认同义词字典中的词在IK分词字典中全部存在
2、 建立索引时以ik_max_word 来分词
3、 搜索时以ik_syno或者ik_syno_max 来检索
setting可配置到模板
添加模板:
PUT /_template/template_1
{
“index_patterns” : [“test*”],
“order” : 0,
“settings”: {
“number_of_shards”: 1,
“analysis”: {
“filter”: {
“my_synonym_filter”:{
“type”:“synonym”,
“synonyms_path”:“analysis/synonym.txt”
}
},
“analyzer”: {
“ik_syno”:{
“type”:“custom”,
“tokenizer”:“ik_smart”,
“filter”:[“my_synonym_filter”]
},
“ik_syno_max”:{
“type”:“custom”,
“tokenizer”:“ik_max_word”,
“filter”:[“my_synonym_filter”]
}
}
}
}
}
synonym.txt 在config/analysis目录下
utf-8 内容格式如下:
花费,耗费,消费
中国,*