zoukankan      html  css  js  c++  java
  • es 中文分词器IK

    一,lk分词器概述

    1.1 IK分词器简介

    IKAnalyzer 是一个开源的,基于 Java 语言开发的轻量级的中文分词工具包,从 2006 年 12 月推出 1.0 版开始,IKAnalyzer 已经推出了 3 个大版本。最初,它是以开源项目 Lucene 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的 IKAnalyzer3.0 则发展为面向 Java 的公用分词组件,独立与 Lucene 项目,同时提供了对 Lucene 的默认优化实现

    1.2 Ik分词器特性

    采用了特有的”正向迭代最细粒度切分算法“,具有 60 万字/秒的高速处理能力。

    采用了多子处理器分析模式,支持:英文字母(IP 地址、Email、URL)、数字(日期、常用中文数量词、罗马数字、科学计数法)、中文词汇(姓名、地名)等分词处理。

    对中英联合支持不是很好,在这方面的处理比较麻烦,需再做一次查询,同时是支持个人词条的优化的词典存储,更小的内存占用。

    支持用户词典扩展定义。

    针对 Lucene 全文检索优化的查询分析器 IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高 Lucene 检索的命中率。

    1.3 中文分词配置
    # 配置前提条件
    1.所有的ES节点都需要安装
    2.所有的ES都需要重启才能生效
    3.中文分词器的版本号要和ES的版本号对应
    
    # 配置中文分词器
    1.第一步:下载安装分词器
    在线安装
    cd /usr/share/elasticsearch
    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
    
    本地安装
    下载分词器6.60版本地址:
      https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
    elasticsearch-analysis-ik-6.6.0.zip
    /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-6.6.0.zip
    
    1.2 所有节点重启
    systemctl restart elasticsearch.service
    

    二,中文分词器的使用

    1 创建索引
    PUT /news2
    
    2 创建模板
    POST /news2/text/_mapping
    {
            "properties": {
                "content": {
                    "type": "text",
                    "analyzer": "ik_max_word",      # 存储数据分词时使用最细分词粒度
                    "search_analyzer": "ik_smart"   # 查询数据分词时使用最粗分词粒度
                }
            }
    }
    
    3 插入数据
    POST /news2/text/1
    {"content":"美国留给伊拉克的是个烂摊子吗"}
    
    POST /news2/text/2
    {"content":"公安部:各地校车将享最高路权"}
    
    POST /news2/text/3
    {"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
    
    POST /news2/text/4
    {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
    
    4 查询数据
    POST /news2/_search
    {
        "query" : { "match" : { "content" : "中国" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    

    三,配置中文分词库

    [root@es03 ~]# vim /etc/elasticsearch/analysis-ik/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">/etc/elasticsearch/config/my.dic</entry>
            <!--用户可以在这里配置自己的扩展停止词字典-->
            <entry key="ext_stopwords"></entry>
            <!--用户可以在这里配置远程扩展字典 -->
            <!-- <entry key="remote_ext_dict">words_location</entry> -->
            <!--用户可以在这里配置远程扩展停止词字典-->
            <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    
    3.1 编辑分词文件
    [root@es03 ~]# cat /etc/elasticsearch/config/my.dic
    中国
    
    3.2 重启服务
    [root@es01 ~]# systemctl restart elasticsearch.service
    
    3.3 重新插入数据
    1.建立索引
    PUT /news
    
    3.创建mapping
    POST /news/text/_mapping
    {
    	"properties": {
    		"content": {
    			"type": "text",
    			"analyzer": "ik_max_word",
    			"search_analyzer": "ik_smart"
    		}
    	}
    }
    
    3.插入数据
    POST /news/text/1
    {"content":"美国留给伊拉克的是个烂摊子吗"}
    POST /news/text/2
    {"content":"公安部:各地校车将享最高路权"}
    POST /news/text/3
    {"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
    POST /news/text/4
    {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
    
    3.4 再次查询关键字
    POST /news/_search
    {
    	"query" : { "match" : { "content" : "中国" }},
    	"highlight" : {
    		"pre_tags" : ["<tag1>", "<tag2>"],
    		"post_tags" : ["</tag1>", "</tag2>"],
    		"fields" : {
    			"content" : {}
    		}
    	}
    }
    
    # 分词正确
    
  • 相关阅读:
    Java线程的几种状态
    常用几种Java Web容器
    数据库触发器
    SQL优化及注意事项
    Oracle中rownum和rowid的区别
    数据库及SQL优化
    如何安装使用Impala
    Impala:新一代开源大数据分析引擎
    开源大数据查询分析引擎
    Google Dremel 原理
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14077918.html
Copyright © 2011-2022 走看看