IK分词器详解

简介: IK分词器详解

IK分词器


什么是 IK 分词器

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱技术"会被分为"我","爱","技","术",这显然不符合要求,所以我们需要安装中文分词器IK来解决这个问题

IK提供了两个分词算法:ik_smartik_max_word

其中ik_smart为最少切分,ik_max_word为最细粒度划分


下载安装

下载不说直接安装.记得版本相同, 公众号内回复电脑环境关键字可获取我已经下载好的.

解压缩后拷贝到ElasticSearchplugins文件夹下

创建 ik 目录

重启ES

之前是没有插件加载的

可以清晰的看到加载了 analysis-ik

也可以通过ES自带的工具查看 命令行执行 ElasticSearch-plugin list


进入Kibana测试

先测试 ik_smart

最少划分

GET _analyze
{
  "analyzer": "ik_smart"
  , "text": "天津理工大学"
}

返回结果

{
  "tokens" : [
    {
      "token" : "天津",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "理工大学",
      "start_offset" : 2,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 1
    }
  ]
}

最细粒度划分

GET _analyze
{
  "analyzer": "ik_max_word"
  , "text": "天津理工大学"
}

返回结果

{
  "tokens" : [
    {
      "token" : "天津",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "理工大学",
      "start_offset" : 2,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "理工大",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "理工",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "工大",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "大学",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 5
    }
  ]
}

若发现结果没有区别, 而且他不认为 查询的词 比如 鑫泽 是一个词, 这就是一个问题,怎么办呢?

这种自己需要的词,需要自己加到字典中


IK分词器增加自己的配置

我们找到IK的配置文件, 位于ik/config/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"></entry>
  <!--用户可以在这里配置自己的扩展停止词字典-->
 <entry key="ext_stopwords"></entry>
 <!--用户可以在这里配置远程扩展字典 -->
 <!-- <entry key="remote_ext_dict">words_location</entry> -->
 <!--用户可以在这里配置远程扩展停止词字典-->
 <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

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

xinze.dic

鑫泽

测试

GET _analyze
{
  "analyzer": "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" : 6,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

文章已上传gitee https://gitee.com/codingce/hexo-blog

项目地址: https://github.com/xzMhehe/codingce-java

目录
相关文章
|
Java Unix 程序员
【OS Ctags】Vim 代码阅读工具 Ctags
【OS Ctags】Vim 代码阅读工具 Ctags
482 0
【OS Ctags】Vim 代码阅读工具 Ctags
|
前端开发 JavaScript 程序员
WordPress免费主题:Document,让阅读变得更加方便
“Document”的主题以方便记、方便查、简约为核心设计理念,适合用作文档类博客。功能包括文章目录导航、黑夜/白天模式切换、代码高亮与一键复制、自定义小部件等。支持SEO优化及多种前端交互效果。提供Github和Gitee开源地址,用户可下载后上传至WordPress主题目录并启用。主题持续更新中
826 58
|
存储 数据管理 API
OpenStack的块存储卷管理快照与克隆
【8月更文挑战第27天】
579 4
|
运维 安全 网络安全
OBCP实践 - 手动部署 OceanBase 集群
手动部署OceanBase集群是一项专业且细致的工作,需要深入理解OceanBase的架构原理和部署流程,同时也需具备丰富的数据库管理和运维经验。对于初次接触OceanBase的用户,建议先从简单的单节点或通过Docker部署开始体验,然后再逐步过渡到复杂集群环境的部署和运维。
486 0
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
1000 9
|
缓存 负载均衡 算法
"揭秘!阿里云视觉智能开放平台人脸1vn搜索慢?轻松几招,QPS飙升,让你的应用快如闪电,用户体验秒变VIP级享受!"
【8月更文挑战第14天】在数字浪潮中,人脸识别技术广泛应用于安全监控到个性化服务等领域。阿里云视觉智能开放平台凭借其强大算法和服务模式成为行业翘楚。面对人脸1:Vn搜索响应慢的问题,不仅可通过增加QPS优化,还需从参数调整、缓存机制、并行处理及算法硬件升级等方面综合施策,以实现搜索速度与准确性的双重提升。
3229 2
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
399 0
|
Linux 数据安全/隐私保护 Windows
linux 搭建cloudreve win映射网络驱动器WebDav
linux 搭建cloudreve win映射网络驱动器WebDav
878 2
|
JavaScript
Hexo个人博客之Next-8.20主题下载及美化
Hexo个人博客之Next-8.20主题下载及美化
|
存储 缓存 算法
【Conan 入门教程 】了解 Conan2.1 中默认生成器的作用
【Conan 入门教程 】了解 Conan2.1 中默认生成器的作用
513 1