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

安装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里面有文字两个字
  • “中文”“汉字”“汉语”三个词出现是由于近义词字典中我们设置了这三个为同等级的近义词
时间: 2024-08-23 04:18:17

安装elasticsearch及中文IK和近义词配置的相关文章

elasticsearch查询中文时,返回结果为空

问题描述 elasticsearch查询中文时,返回结果为空 如下图所示,elasticsearch配置的时IK中文分词,可以确定分词没问题.这是分词效果: 索引中也有相关的数据文档: ? 但是查询"湖北"的时候,查询返回结果为空: 即使将"湖北"换成"湖",也是一样,返回结果始终为空,但是查询英文就是正常的. 这到底是什么原因呢?求解~ 解决方案 你好,你的问题解决了吗?我的也是这个问题,求分享! 解决方案二: 可能是编码问题,中文需要进行 u

在VPC中安装Elasticsearch外网无法访问

在VPC中安装Elasticsearch外网无法访问 需要配置 network.publish_host: EIP 安装 head 插件: ./plugin install mobz/elasticsearch-head 重启 elasticsearch 并通过web查看集群状态: http://$IP$:9200/_plugin/head

安装了多版本office启动时需要重新配置如何解决

  安装了多版本office启动时需要重新配置如何解决         ①在开始菜单--所有程序--Microsoft Office文件夹里面可以看到小编的本本安装了三个版本,是为了截图方便各个版本的使用者. ②我启动Word2010,就会出现重新配置的界面,很耽误时间,而且每次都这样,要知道小编的时间可是十分宝贵的. ③下面教大家一个十分简单的解决办法,按下Win+R打开运行对话框,输入下面的指定. 命令1(用于Office 2003): reg add HKCUSoftwareMicroso

java-我eclipse安装以后,已安装了对应的jdk。想打开eclipse配置,却打不开,求解释?

问题描述 我eclipse安装以后,已安装了对应的jdk.想打开eclipse配置,却打不开,求解释? 解决方案 你配置java的环境变量了吗?如果配置了的话,要把java的环境变量,放在PATH的最前面 解决方案二: 要设置环境变量,JAVA_HOME,Path还有CLASSPATH 解决方案三: 安装只是第一步,第二步也是最重要的:配置环境变量.在黑窗口中输入javac,如果出现一堆内容,则说明环境配置好了,输入java 出现内容只能说明安装ok了. 解决方案四: 1.首先检查你配置的JDK

YUM解决RPM包安装依赖关系及yum工具介绍本地源配置方法详解_Linux

1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题 1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的包 2)由于内外网的隔离,无法连接外网的yum源 鉴于上述因此,本文将详细介绍,yum工具以及配置本地yum源的方法 2.yum工具简介 •yum工具作为rpm包的软件管理器,可以进行rpm包的安装.升级以及删除等日常管理工作,而且对于rpm包之间的依赖关系可以自动分析,大大简化了rpm包的维护成本. •yum工具

全新 Mac Pro 上手体验 - 漂亮、安静,有近200种配置

class="post_content" itemprop="articleBody"> 全新 Mac Pro 今天开始接受订购,目前已经有媒体收到了测试样机.The Verge 网站已经发布了简单的上手评测,一些照片以及真机把玩视频.Mac Pro 很光亮,反光性很强.如果边上有人走,可以从 Mac Pro 清楚的看见-- 当然这种设计也让 Mac Pro 成为指纹收集器,不过看起来非常漂亮,耐人寻味,在4K夏普显示器边上看着非常棒.当把  Mac Pro

Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案

AndroidStudio终于出3.0正式版了,内置了kotlin(虽然我安了插件一直能用).一直忍着没敢下rc版的好奇猫,总算装了正式版.当然,伴随每次大版本更新,总有一些恼人的后遗症,其中以gradle问题最多.AS3.0要求gradle版本在3.5以上,配置文件内将标准版本指定为gradle-4.1-milestone-1. 之前用的是AS2.3,在稳定版3.0发布之后由于好奇,就更新到了3.0.但是,除了Android Profiler分析器+自我感觉native编译速度加快以外,其他的

Elasticsearch 使用中文分词

本文演示了如何使用IK Analysis 插件来实现在 Elasticsearch 中的中文分词功能. 使用中文分词 在"Spring Boot应用企业级博客系统"课程中(http://coding.imooc.com/class/125.html),所有的博客功能都已经完成了.读者朋友们开始愉快地使用博客来发表博客了.但如果朋友们足够细心的话,发现在输入中文的标签的时候,存在一定的问题. 比如,当我们想将某个博客标记为"大神"时,博客系统却将这个单词粗暴的分成了如

MySQL手动安装方法与中文解决方案

    花了1天,在Debian Etch Linux上成功安装了MySQL 5.0.27 icc版本,并使用JDBC测试中文成功! 中文问题的关键是全部使用UTF-8编码,MySQL 5发布版支持UTF-8,但默认为latin1,Java在内部使用的全部是Unicode,因此要保证JSP页面以UTF-8编码,JDBC驱动采用官方Connector4J 5.0.4,在Resin 3.1/Spring 2.0/Hibernate 3.2环境下测试中文正常. 1. 下载"mysql-standard