欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES-同义词配置

程序员文章站 2023-12-21 23:10:40
...

同义词搜索的配置
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”
}
}
}
}
}

加数据

  1. POST test_index/doc
  2. {
  3. “item_name”:“对违反出租车运营规定的处罚”
  4. }
  5. POST test_index/doc
  6. {
  7. “item_name”:“出租汽车经营者不按照规定配置出租汽车相关设备”
  8. }

测试

  1. GET test_index/doc/_search
  2. {
  3. “query”: {
  4.  "match": {
    
  5.    "item_name": "出租汽车"
    
  6.  }
    
  7. }
  8. }
  9. GET test_index/doc/_search
  10. {
  11. “query”: {
  12. "match": {
    
  13.   "item_name": "出租车"
    
  14. }
    
  15. }

同义词和扩展词库配置的注意要点:
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 内容格式如下:
花费,耗费,消费
中国,*

相关标签: ES 同义词

上一篇:

下一篇: