elastic ik分词 中文 同义词 查询 实现案例


声明:本文转载自https://my.oschina.net/u/1023341/blog/1559987,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

前一段时间做了一个按照标签内容匹配文字的功能,由于匹配的文字不是很多。扩大匹配相关性。做了一个同义词相关联的查询。顺便记录一下工作中遇到的一些问题。
文中相关的地方,都会给出相关的文章链接。
es版本为5.4.1
本文为默认安装了ik分词插件
服务器为linux服务器
elastic中关于同义词的实现链接: https://www.elastic.co/guide/cn/elasticsearch/guide/current/multi-word-synonyms.html#multi-word-synonyms

以及*同义词的词库*:https://github.com/laotoutou/AitSimwords  首先在es中新建文件    /opt/elastic/config/    下面新建文件    synonym.txt 并输入一下内容</br> 
族,现代人,人类,智人,民族,史前人类,人民,人,大众 
创建es的索引 
curl -XPUT 127.0.01:9200/test1 -d' {   "settings": {     "analysis": {       "filter": {         "my_synonym_filter": {           "type": "synonym",            "synonyms_path": "synonym.txt"         }       },       "analyzer": {         "my_synonyms": {           "tokenizer": "ik_smart",           "filter": [             "lowercase",             "my_synonym_filter"            ],           "use_smart": true         }       }     }   } }' 
创建索引的mapping 
curl -XPUT 127.0.01:9200/test1/_mapping/test1 -d' {       "properties" : {         "id" : {           "type" : "keyword"         },         "name" : {           "type" : "text",           "analyzer" : "my_synonyms",           "include_in_all" : true         },          "content" : {           "type" : "text",           "analyzer" : "my_synonyms",           "include_in_all" : true         }       } }' 
并在索引中新增相关的数据 
curl -XPUT 127.0.0.1:9200/test1/test1/120 -d '{     "name": "族" }'  curl -XPUT 127.0.0.1:9200/test1/test1/121 -d '{     "name": "现代人" }' curl -XPUT 127.0.0.1:9200/test1/test1/122 -d '{     "name": "人类" }' curl -XPUT 127.0.0.1:9200/test1/test1/123 -d '{     "name": "智人" }' curl -XPUT 127.0.0.1:9200/test1/test1/124 -d '{     "name": "民族" }' curl -XPUT 127.0.0.1:9200/test1/test1/125 -d '{     "name": "史前人类" }' curl -XPUT 127.0.0.1:9200/test1/test1/126 -d '{     "name": "人民" }' curl -XPUT 127.0.0.1:9200/test1/test1/127 -d '{     "name": "大众" }' curl -XPUT 127.0.0.1:9200/test1/test1/128 -d '{     "name": "人" }' 
尝试进行es查询 
curl -XPOST '127.0.0.1:9200/test1/test1/_search?pretty' -d ' {   "query": {     "match_phrase": {       "name": {         "query": "大众",         "analyzer": "my_synonyms"       }     }   } }' 

尝试查看结果

由于在网上找的一些资料都没有进行同义词的词库链接。
在github上找了一个同义词的词库链接。由于在测试阶段。还没有正式使用。实用性有待研究。 https://github.com/laotoutou/AitSimwords
链接里面的内容词语之间都是tab符号需要去除,换成es中的,符号。用java写了一个小程序修改。

public static void readFile(){         try {             FileReader fr = new FileReader("C:\\worksoft\\git\\AitSimwords\\AitSimwords.txt");             BufferedReader reader = new BufferedReader(fr);             String str = "";              FileWriter fw = new FileWriter("C:\\worksoft\\git\\AitSimwords\\AitSimwords1.txt");             BufferedWriter writer = new BufferedWriter(fw);              while ((str = reader.readLine()) != null){                 System.out.println(str);                 if (StringUtils.isEmpty(str)){                     continue;                 }                 writer.write(str.replaceAll("\\t" , "," ).substring(0 , str.length()-1));                 writer.newLine();                 writer.flush();             }             reader.close();             fr.close();              writer.close();             fw.close();          } catch (FileNotFoundException e) {             e.printStackTrace();         }catch (IOException e) {             e.printStackTrace();         }     } 

之前的文字 列举一部分,连接中的行数有2800行左右

鲜花	花	被子植物门	被子植物	开花植物	有花植物	花蕾	花卉	赏花	花朵	开花	 绿色	绿	 树木	树	Tree	大树	 海	大海	海域	海子	 Hong	蓝色	희열다나	红绿蓝	Yeol	Na	홍성미	Mi	Seong	Da	Hee	Hi	洪性美	喜悦Dana	Sung	Dana	蓝	 绿色植物	多年生草本	植物	多年草	植物界	宿根草	多年生	therophyte	一年生植物	多年生植物	一年生草本	 四旬	大斋节期	红色	大斋节	预苦期	红	大斋期	严斋期	四旬期	大红色	紫色	 五色旗	黄	红	黑	白色	白	蓝	 背景	 

修改以后的问题

鲜花,花,被子植物门,被子植物,开花植物,有花植物,花蕾,花卉,赏花,花朵,开花 绿色,绿 树木,树,Tree,大树 海,大海,海域,海子 Hong,蓝色,희열다나,红绿蓝,Yeol,Na,홍성미,Mi,Seong,Da,Hee,Hi,洪性美,喜悦Dana,Sung,Dana,蓝 绿色植物,多年生草本,植物,多年草,植物界,宿根草,多年生,therophyte,一年生植物,多年生植物,一年生草本 四旬,大斋节期,红色,大斋节,预苦期,红,大斋期,严斋期,四旬期,大红色,紫色 五色旗,黄,红,黑,白色,白,蓝 背景 

然后把修改以后的文件上传到es的config下面的synonym.txt 文件中既可.

本文发表于2017年11月02日 20:34
(c)注:本文转载自https://my.oschina.net/u/1023341/blog/1559987,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1913 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1