zoukankan      html  css  js  c++  java
  • ElasticSearch 安装 elasticsearch-analysis-ik分词器

     

    IK versionES version
    master 5.x -> master
    5.6.1 5.6.1
    5.5.3 5.5.3
    5.4.3 5.4.3
    5.3.3 5.3.3
    5.2.2 5.2.2
    5.1.2 5.1.2
    1.10.1 2.4.1
    1.9.5 2.3.5
    1.8.1 2.2.1
    1.7.0 2.1.1
    1.5.0 2.0.0
    1.2.6 1.0.0
    1.2.5 0.90.x
    1.1.3 0.20.x
    1.0.0 0.16.2 -> 0.19.0

     

     

    一、安装。

    • 去github下下载对应的ik版本: https://github.com/medcl/elasticsearch-analysis-ik/releases,并解压到对应的安装路径:../elasticsearch-5.5.3/plugin/

       

    • 使用elasticsearch-plugin插件来安装 ( 版本 > v5.5.1 ):

      ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.1/elasticsearch-analysis-ik-5.6.1.zip

    二、重启 elasticsearch

     

    三、安装配置

    IKAnalyzer.cfg.xml can be located at {conf}/analysis-ik/config/IKAnalyzer.cfg.xml or {plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    	<comment>IK Analyzer 扩展配置</comment>
    	<!--用户可以在这里配置自己的扩展字典 -->
    	<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
    	 <!--用户可以在这里配置自己的扩展停止词字典-->
    	<entry key="ext_stopwords">custom/ext_stopword.dic</entry>
     	<!--用户可以在这里配置远程扩展字典 -->
    	<entry key="remote_ext_dict">location</entry>
     	<!--用户可以在这里配置远程扩展停止词字典-->
    	<entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>
    </properties>

    五、热更新 IK 分词使用方法

    目前该插件支持热更新 IK 分词,通过上文在 IK 配置文件中提到的如下配置

     	<!--用户可以在这里配置远程扩展字典 -->
    	<entry key="remote_ext_dict">location</entry>
     	<!--用户可以在这里配置远程扩展停止词字典-->
    	<entry key="remote_ext_stopwords">location</entry>

    其中 location 是指一个 url,比如 http://yoursite.com/getCustomDict,该请求只需满足以下两点即可完成分词热更新。

    1. 该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。

    2. 该 http 请求返回的内容格式是一行一个分词,换行符用   即可。

    满足上面两点要求就可以实现热更新分词了,不需要重启 ES 实例。

    可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里,放在 nginx 或其他简易 http server 下,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。

     

    六、常见问题

    1.自定义词典为什么没有生效?

    请确保你的扩展词典的文本格式为 UTF8 编码

    2.如何手动安装?

    git clone https://github.com/medcl/elasticsearch-analysis-ik
    cd elasticsearch-analysis-ik
    git checkout tags/{version}
    mvn clean
    mvn compile
    mvn package

    拷贝和解压release下的文件: #{project_path}/elasticsearch-analysis-ik/target/releases/elasticsearch-analysis-ik-*.zip 到你的 elasticsearch 插件目录, 如: plugins/ik 重启elasticsearch

    另一种方法是下载源码包:

    1)、到github网站下载源代码,网站地址为:https://github.com/medcl/elasticsearch-analysis-ik

    右侧下方有一个按钮“Download ZIP",点击下载源代码elasticsearch-analysis-ik-master.zip。

    2)、解压文件elasticsearch-analysis-ik-master.zip,进入下载目录,执行命令:

    1 unzip elasticsearch-analysis-ik-master.zip  

    3)、将解压目录文件中config/ik文件夹复制到ES安装目录config文件夹下。

    4)、因为是源代码,此处需要使用maven打包,进入解压文件夹中,执行命令:

    1 mvn clean package  

    5)、将打包得到的jar文件elasticsearch-analysis-ik-1.2.6-sources.jar复制到ES安装目录的lib目录下。

    6)、在ES的配置文件config/elasticsearch.yml中增加ik的配置,在最后增加:

     1 index:  
     2   analysis:                     
     3     analyzer:        
     4       ik:  
     5           alias: [ik_analyzer]  
     6           type: org.elasticsearch.index.analysis.IkAnalyzerProvider  
     7       ik_max_word:  
     8           type: ik  
     9           use_smart: false  
    10       ik_smart:  
    11           type: ik  
    12           use_smart: true  

    index.analysis.analyzer.ik.type : “ik”  

    7)、重新启动elasticsearch服务,这样就完成配置了。

    3.分词测试失败 请在某个索引下调用analyze接口测试,而不是直接调用analyze接口 如:http://localhost:9200/your_index/_analyze?text=中华人民共和国MN&tokenizer=my_ik, 版本5.0以后的将使用analyzer=ik_max_word,如: curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_smart' -d '联想是全球最大的笔记本厂商'。

    4. ik_max_word 和 ik_smart 什么区别?

    ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;

    ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。

    【references】

    【1】https://github.com/medcl/elasticsearch-analysis-ik

    【2】http://blog.csdn.net/jam00/article/details/52983056

  • 相关阅读:
    华为云·核心伙伴开发者训练营第七期开营,共赴产业云美好明天!
    GaussDB (for Cassandra) 数据库治理:大key与热key问题的检测与解决
    我的应用我做主丨动手搭建招聘小应用
    大数据集群被窃取数据怎么办?透明加密可以一试
    云小课 | 使用ROMA API,API管理从此不用愁!
    带你了解Node.js包管理工具:包与NPM
    下班约会时来了新需求,咋办?
    CANN 5.0黑科技解密 | 算力虚拟化,让AI算力“物尽其用”
    15个问题自查你真的了解java编译优化吗?
    鸿蒙轻内核M核的故障管家:Fault异常处理
  • 原文地址:https://www.cnblogs.com/hoojjack/p/7608248.html
Copyright © 2011-2022 走看看