Elasticsearch 中文分词器

这篇具有很好参考价值的文章主要介绍了Elasticsearch 中文分词器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

IK 分词器

我们在ES中最常用的中文分词器就是IK分词器,其项目地址为:https://github.com/medcl/elasticsearch-analysis-ik

下载安装

  1. 下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases

  2. 下载时注意和es的版本对应,我们es版本为:8.6.2。所以我们下载 elasticsearch-analysis-ik-8.6.2.zip 解压包内容如下:
    Elasticsearch 中文分词器

  3. 在ES home/plugins 目录下创建目录 ik,并将我们下载下zip包解压到 es_home/plugins/ik 目录下

  4. 重启 ES 服务

使用

IK 分词器有如下方式使用:
analyzer 和 tokenizer 均可配置使用 ik 分词器,两种配置对应的值均为如下两个:

  • ik_smart (最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询)
  • ik_max_word(最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query)

ik_max_word 示例

{
  "analyzer" : "ik_max_word",
  "text" : "我们都是中国人"
}{
  "tokenizer" : "ik_max_word",
  "text" : "我们都是中国人"
}

解析结果:

{
    "tokens": [
        {
            "token": "我们",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "都是",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "中国人",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "中国",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "国人",
            "start_offset": 5,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 4
        }
    ]
}

ik_smart 示例

{
  "tokenizer" : "ik_smart",
  "text" : "我们都是中国人"
}

解析结果:

{
    "tokens": [
        {
            "token": "我们",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "都是",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "中国人",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 2
        }
    ]
}

IK 分词器字典扩展

在 ik 的文件的 config 目录下有 ik 分词的配置文件(IKAnalyzer.cfg.xml)以及相关的 dic 字典文件。

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"></entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

注释说得很明确了,我们来总结一下就是 IK 支持两种扩展方式:

  1. 本地 dic 文件扩展
  2. 远程配置扩展

本地 dic 文件扩展

1. 在 ik 的 config 目录下创建我们的扩展词典文件:my_ext_dic.dic

在文件中添加我们要扩展的词

my_ext_dic.dic
科比布莱恩特

我们就加科比的名字吧

2. 修改 IKAnalyzer.cfg.xml 配置

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">my_ext_dic.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

  1. 重启 ES 服务
  2. 验证是否成功
{
  "tokenizer" : "ik_max_word",
  "text" : "NBA篮球巨星,科比布莱恩特中国行"
}

查看结果,最终的分词中一定会有“科比布莱恩特”这样完整的词语。

远程扩展字典

IKAnalyzer.cfg.xml 配置

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

words_location 需要替换为我们远程的url,比如:https://aaaa.com/dics

对远程url的要求

  1. http 请求需要返回两个 header,一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,ik 插件就会去抓取新的分词进而更新词库。
  2. http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。

使用nginx或其他web服务器提供字典扩展服务

  • 可以将字典放在 UTF-8 编码的 .txt 文件中,然后将文件放在web服务器中,当这个 .txt 文件更新时,ik 会自动获取并更新扩展词典。

远程扩展字典的方式无需重启 ES 服务,只是在字典管理上来说,扩展字段文件独立于 ES 服务了,在字典需要频繁修改等时候,我们还可以自定义一个管理端应用,动态的通过应用来修改。文章来源地址https://www.toymoban.com/news/detail-486134.html

到了这里,关于Elasticsearch 中文分词器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch安装中文分词器IK Analyzer

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文介绍IK Analyzer分词器的安装配置、使用以及ES数据迁移。 克隆IK分词器项目,根据README的描述选择对应版本的分支。浏览器访问ES的ip+端口就能看到版本信息,所以我需要切到master分支。 打开pom需要

    2024年02月12日
    浏览(58)
  • Elasticsearch教程(35) ik中文分词器+pinyin拼音分词器+同义词

    闲来无事,发现上一篇ES博客还是 去年9月份 写的中文ik分词器 pinyin 首字母 search_as_you_type 组合使用,该篇文章还挖了一个 大坑 没有填,快一年了,是时候填下坑了。 针对股票查询这个特点场景,再结合一般使用者的搜索习惯,暂时确定如下7种期望效果。 上一篇博客Elast

    2023年04月09日
    浏览(47)
  • es elasticsearch 十 中文分词器ik分词器 Mysql 热更新词库

    目录 中文分词器ik分词器 介绍 安装 使用分词器 Ik分词器配置文件 Mysql 热更新词库 介绍 中文分词器按照中文进行分词,中文应用最广泛的是ik分词器 安装 官网下载对应版本zip 下载  放到  plugins 目录 新建 ik文件夹 考入解析zip 重启 es //分成小单词 使用分词器 ik_max_word分成

    2024年02月07日
    浏览(60)
  • Elasticsearch7.8.0版本进阶——IK中文分词器

    通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定要分析的文本 输出结果如下: 由上图输出结果可知,ES 的默认分词器无法识别中文中测试、单词这样的词汇,而是简单的将每个字拆完分为一个词,这样的结果显然不符合我们的使用要求,所以我们需要下载 ES 对应

    2024年02月01日
    浏览(46)
  • ElasticSearch 中的中文分词器以及索引基本操作详解

    配置完成后,重启 es ,即可生效。 热更新,主要是响应头的 Last-Modified 或者 ETag 字段发生变化,ik 就会自动重新加载远程扩展辞典。 视频笔记,在公众号 江南一点雨 后台回复 elasticsearch04 获取下载链接。 2. ElasticSearch 索引管理 微信公众号 江南一点雨 后台回复 elasticsearch

    2024年04月25日
    浏览(33)
  • Elasticsearch07:ES中文分词插件(es-ik)安装部署

    在中文数据检索场景中,为了提供更好的检索效果,需要在ES中集成中文分词器,因为ES默认是按照英文的分词规则进行分词的,基本上可以认为是单字分词,对中文分词效果不理想。 ES之前是没有提供中文分词器的,现在官方也提供了一些,但是在中文分词领域,IK分词器是

    2024年02月03日
    浏览(81)
  • ElasticSearch 学习9 spring-boot ,elasticsearch7.16.1实现中文拼音分词搜索

    一、elasticsearch官网下载:Elasticsearch 7.16.1 | Elastic 二、拼音、ik、繁简体转换插件安装 ik分词:GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary. 拼音分词:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is

    2024年01月22日
    浏览(50)
  • elasticsearch安装中文分词IK启动异常:java.nio.file.AccessDeniedException

    启动错误信息如下: 问题原因:plugins中添加的ik目录没有权限; 解决方案:进入elasticsearch容器对应plugins目录下,进行 chmod 777 ik 授权即可。

    2024年02月03日
    浏览(63)
  • ElasticSearch:centos7安装elasticsearch7,kibana,ik中文分词器,云服务器安装elasticsearch

    系统:centos7 elasticsearch: 7.17.16 安装目录:/usr/local 云服务器的安全组:开放 9200 和5601的端口 1、安装 2、修改es的配置文件 注意:es集群启动后,所有节点的cluster.initial_master_nodes: [\\\"node-1\\\"] 都要注释掉。 3、修改jvm.options 可能出现报错 1、配置elasticsearch.yml   错误内容 : the de

    2024年02月03日
    浏览(53)
  • windows环境基于Elasticsearch8.4.0的IK中文分词器的安装、部署、使用

    目录 问题现象: 解决方法: 1、下载IK中文分词器 2、部署 3、使用 前言(选看)       最近在重温Elasticsearch,看来一下官网,都出到8.4.3版本了。想当初学的时候用的还是5.6.8,版本更新了很多意味着有大变动。           windows环境基于Elasticsearch8.4.0的IK中文分词器的安

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包