安装elasticsearch及中文IK和近义词配置

安装java环境

java环境是elasticsearch安装必须的

yum install java-1.8.0-openjdk

安装elasticsearch

其实es的安装非常简单了

https://www.elastic.co/downloads/elasticsearch
cd /tmp
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.tar.gz
tar -xf elasticsearch-1.7.1.tar.gz
mv /tmp/elasticsearch-1.7.1 /usr/local/
ln -s /usr/local/elasticsearch-1.7.1 /usr/local/elasticsearch

安装head插件

head插件让我们能更简单管理elasticsearch

cd /usr/local/elasticsearch
./bin/plugin --install mobz/elasticsearch-head

访问 http://192.168.33.10:9200/_plugin/head/ 可以访问

安装IK插件

去rtf项目中获取对应插件,建议别去自己找plugin下,medcl大已经为我们准备好了一切

cd /tmp
wget https://github.com/medcl/elasticsearch-rtf/archive/master.zip
unzip elasticsearch-rtf-master.zip
cd elasticsearch-rtf-master
cp -rf config/ik /usr/local/elasticsearch/config/
cp -rf plugins/analysis-ik /usr/local/elasticsearch/plugins/vim /usr/local/elasticsearch/config/elasticsearch.yml
增加:
index:
  analysis:
    analyzer:
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_max_word:
          type: ik
          use_smart: false
      ik_smart:
          type: ik
          use_smart: true

配置近义词

近义词组件已经是elasticsearch自带的了,所以不需要额外安装插件,但是想要让近义词和IK一起使用,就需要配置自己的分析器了。

首先创建近义词文档

在config目录下

mkdir analysis
vim analysis/synonym.txt编辑:i-pod, i pod, i pad => ipod,
sea biscuit, sea biscit => seabiscuit,
中文,汉语,汉字

这里可以看到近义词的写法有两种:

a,b => c
a,b,c

第一种在分词的时候,a,b都会解析成为c,然后把c存入索引中
第二种在分词的时候,有a的地方,都会解析成a,b,c,把a,b,c存入索引中
第一种方法相比之下有个主词,比较省索引。

配置elasticsearch.yml中的自定义索引,和前面的ik结合,可以这么设置:

index:
  analysis:
    analyzer:
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_max_word:
          type: ik
          use_smart: false
      ik_smart:
          type: ik
          use_smart: true
      my_synonyms:
          tokenizer: standard
      ik_syno:
          type: custom
          tokenizer: ik
          filter: [my_synonym_filter]
      ik_syno_smart:
          type: custom
          tokenizer: ik
          filter: [my_synonym_filter]
          use_smart: true
    filter:
      my_synonym_filter:
          type: synonym
          synonyms_path: analysis/synonym.txt

上面的配置文件创建了一个filter: my_synonym_filter, 然后创建了两个自定义analyzer: ik_syno和ik_syno_smart

启动elasticsearch:

bin/elasticsearch

案例测试

按照上面的配置,我们使用一个具体的句子进行测试:

120.55.72.158:9700/elasticsearchtest2
{
"index" : {
"analysis" : {
"analyzer" : {
"ik_syno" : {
"tokenizer" : "ik",
"filter" : ["my_synonym_filter"]
}
}
}
}
}

curl -XPOST "192.168.33.10:9200/elasticsearchtest/_analyze?analyzer=ik_syno" -d 'we are eng man i pad 汉语文字'

返回json结构:

{"tokens": [{"token": "we","start_offset": 0,"end_offset": 2,"type": "ENGLISH","position": 1},{"token": "eng","start_offset": 7,"end_offset": 10,"type": "ENGLISH","position": 2},{"token": "man","start_offset": 11,"end_offset": 14,"type": "ENGLISH","position": 3},{"token": "ipod","start_offset": 15,"end_offset": 20,"type": "SYNONYM","position": 4},{"token": "中文","start_offset": 21,"end_offset": 23,"type": "SYNONYM","position": 5},{"token": "汉语","start_offset": 21,"end_offset": 23,"type": "SYNONYM","position": 5},{"token": "汉字","start_offset": 21,"end_offset": 23,"type": "SYNONYM","position": 5},{"token": "文字","start_offset": 23,"end_offset": 25,"type": "CN_WORD","position": 6}]
}

这里就可以看到我们之前配置的东西都成功了:

  • are字被过滤,是由于are字是stop_words
  • i pad这个词语被转化为了ipod是由于近义词字典中我们设置了 i pad=>ipod
  • “文字”两个中文字是被分成一个中文词切割,是因为ik的默认main.dic里面有文字两个字
  • “中文”“汉字”“汉语”三个词出现是由于近义词字典中我们设置了这三个为同等级的近义词
本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/4789239.html,如需转载请自行联系原作者

安装elasticsearch及中文IK和近义词配置相关推荐

  1. JAVA ik es_安装elasticsearch及中文IK和近义词配置

    安装elasticsearch及中文IK和近义词配置 安装java环境 java环境是elasticsearch安装必须的 yum install java-1.8.0-openjdk 安装elast ...

  2. python 近义词库包 synonyms 的使用

    最近接触到nlp的一些东西,需要找出中文词语的近义词,也接触到了一个synonyms 的库, 分词,去停用词,word2vector  等 一些列nlp 的操作,还可以输出中文词语的近义词 https ...

  3. 安装使用中文近义词工具包:Synonyms

    Synonyms: 中文近义词工具包 前言 安装 使用 synonyms#nearby(word [, size = 10]) synonyms#compare(sen1, sen2 [, seg=T ...

  4. 【Elasticsearch】相关性,近义词匹配,纠错匹配

    目录 相关性 布尔模型 词频/逆向文档频率(TF/IDF) 词频 逆向文档频率 字段长度归一值 结合使用 向量空间模型 Lucene 的实用评分函数 近义词匹配 近义词查询原理 同义词过滤器 纠错匹配 ...

  5. Synonyms:一个开源的中文近义词工具包

    作者:Synonyms 项目的作者胡小夕是北京邮电大学研究生,目前实习于今日头条 AI LAB.从事自然语言处理方向研究,在智能客服,知识图谱等领域都有相关研究开发经验. 工具包技术说明:该中文近义词 ...

  6. Python synonyms查找中文任意词汇的同义词近义词

    Python synonyms查找中文任意词汇的同义词近义词 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!

  7. Synonyms最好的中文近义词工具包

    1.中文分词 import synonyms synonyms.seg("中文近义词工具包") 分词结果,由两个list组成的元组,分别是单词和对应的词性. (['中文', '近义 ...

  8. Elasticsearch-ik同义词,近义词,联想词

    Elasticsearch-ik同义词,近义词,联想词 1. 将ik安装到elasticsearch/plugin/ 两种方式: (1) 方式1:下载构建包: https://github.com/m ...

  9. ​ES elasticsearch-analysis-dynamic-synonym​连接数据库动态更新synonym近义词

    前言 在很多搜索场景中,我们希望能够搜索出搜索词相关的目标,同时也希望能搜索出其近义词相关的目标.例如在商品搜索中,搜索"瓠瓜",也希望能够搜索出"西葫芦",但 ...

最新文章

  1. 关于MVC框架和spring
  2. tomcat 、jsp、 servlet 、jstl版本对应
  3. 查漏补缺方为上策!!两万六字总结vue的基本使用和高级特性,周边插件vuex和vue-router任你挑选
  4. obj[]与obj._Ruby中带有示例的Array.rassoc(obj)方法
  5. datatable的使用
  6. Redis数据结构——字典-hashtable
  7. XMLHTTP使用详解
  8. python 传参open
  9. hibernate 二级缓存 处理
  10. 射频电路习题解答(一)——利用电子smith图解题
  11. eclipse 里边的 字体颜色代表了什么意思?
  12. excel利用vba批量生成word报告
  13. 联邦学习和去中心化训练--知识记录
  14. Spark API 之subtract(差集)
  15. HC-SR505人体红外报警系统
  16. Python和R的GUI图形化编程与用户界面
  17. 1000多块整个插板,arduino + android 蓝牙插板的实现--屌丝版
  18. 储存数据与操作Excel [爬虫专题(9)]
  19. 企鲸客scrm 渠道活码功能介绍及作用
  20. 【OpenGL】图片的像素和分辨率

热门文章

  1. 【数学建模】2018数学建模国赛B题 --python实现情况1
  2. firefox的html校验与dreamweave
  3. pandas归一化某一列_十分钟带你了解pandas常用方法
  4. A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection 笔记
  5. 把握三个关键点在家轻松自制清真小吃——炸油香
  6. 5G工业路由器在AGV小车的应用
  7. 谷粒学院(七)讲师列表前端实现
  8. Ae 效果详解:Keylight(1.2)
  9. 红烧肉怎么做好吃 红烧肉的做法
  10. 胃部不适的话吃什么养胃