Elasticsearch分词器

news/2024/10/27 3:35:18/

前奏

es的chinese、english、standard等分词器对中文分词十分不友好,几乎都是逐字分词,对英文分词比较友好。

在kibana的dev tools中测试分词:

POST /_analyze 
{"analyzer": "standard","text": "你太棒了golang"
}
  • POST:请求方式
  • /_analyze:请求路径,此处省略了http://127.0.0.1:9200,由kibana自行补全
  • 请求参数,json格式
    • analyzer:分词器类型,默认为standard分词器
    • text:将要分词的内容
{"tokens" : [{"token" : "你","start_offset" : 0,"end_offset" : 1,"type" : "<IDEOGRAPHIC>","position" : 0},{"token" : "太","start_offset" : 1,"end_offset" : 2,"type" : "<IDEOGRAPHIC>","position" : 1},{"token" : "棒","start_offset" : 2,"end_offset" : 3,"type" : "<IDEOGRAPHIC>","position" : 2},{"token" : "了","start_offset" : 3,"end_offset" : 4,"type" : "<IDEOGRAPHIC>","position" : 3},{"token" : "golang","start_offset" : 4,"end_offset" : 10,"type" : "<ALPHANUM>","position" : 4}]
}

ik分词器

此处引入ik分词器,其下载地址为:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.1

选择如下压缩包下载即可
在这里插入图片描述
将该压缩包解压到ES安装目录的plugins文件夹
在这里插入图片描述
重启ES后,在Kibana中指定分词策略
ik分词器有两种模式

  • ik_smart:最少切分,粒度始终,切分后占用内存少
  • ik_max_word:最细切分,精细化切分,占用内存多

二者在选取时需要关注分词场景及内存规划

ik_smart切分效果:

POST /_analyze
{"analyzer": "ik_smart","text": "你太棒了golang"
}{"tokens" : [{"token" : "你","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "太棒了","start_offset" : 1,"end_offset" : 4,"type" : "CN_WORD","position" : 1},{"token" : "golang","start_offset" : 4,"end_offset" : 10,"type" : "ENGLISH","position" : 2}]
}

ik_max_word切分效果:

POST /_analyze
{"analyzer": "ik_max_word","text": "你太棒了golang"
}{"tokens" : [{"token" : "你","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "太棒了","start_offset" : 1,"end_offset" : 4,"type" : "CN_WORD","position" : 1},{"token" : "太棒","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 2},{"token" : "了","start_offset" : 3,"end_offset" : 4,"type" : "CN_CHAR","position" : 3},{"token" : "golang","start_offset" : 4,"end_offset" : 10,"type" : "ENGLISH","position" : 4}]
}

ik分词器,拓展词库,停用词库

要拓展ik分词器的词库,只需要修改一个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"></entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

在标签内加入文件路径

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

同时建立ext.dic文件及stopword.dic文件,将词汇按行写入文件中,重启es即可生效。

  • ext.dic是扩展词列表
  • stopword.dic是停用(禁用)词列表

http://www.ppmy.cn/news/510764.html

相关文章

Streamlit基础教程

streamlit是什么 streamlit是一个开源的python库&#xff0c;它能够快速的帮助我们创建定制化的web应用&#xff0c;而且还非常便于和他人分享&#xff0c;特别是在机器学习和数据科学领域。整个过程不需要你了解任何前端的知识&#xff0c;包括html、css、javascript等&#x…

计算机网络复习资料(前六章谢希仁版)

计算机网络复习 作者&#xff1a;why will kill it 第一章 概述 internet和Internet的区别 以小写字母“i”开始的internet&#xff08;互联网&#xff09;是一个通用名词&#xff0c;它泛指由多个计算机网络互连而成的网络以大写字母“I”开始的Internet&#xff08;互联网…

计算机网络知识点整理

一、电路交换、报文交换、分组交换的比较 1、电路交换 公共电话网(PSTN网)和移动网(包括GSM和CDMA网)采用的都是电路交换技术&#xff0c;它的基本特点是采用面向连接的方式&#xff0c;在双方进行通信之前&#xff0c;需要为通信双方分配一条具有固定宽带的通信电路&#xf…

查询表格——建立动态表格,使用ajax输入查询条件将后台数据查询出来以表格的形式展示出来...

建立动态表格&#xff0c;使用ajax将前台查询条件传给后台&#xff0c;并将查询结果以表格的形式展示出来。 页面的展示效果如下图所示&#xff1a; 第一步&#xff1a;查询条件的部分&#xff1a; 代码如下&#xff1a; <div class"text-c"> <span style…

计算机网络学习总结

计算机网络学习总结 计算机网络简介计算机网络的功能计算机网络的组成计算机网络的分类标准化工作性能指标速率带宽吞吐量时延时延带宽积往返时延RTT利用率 分层OSI七层模式TCP/IP参考模型 物理层物理层基本知识码元、波特、速率和带宽奈氏准则和香农定理编码&调制 数据链路…

家庭网络对外网络服务搭建指南

家庭网络对外网网络服务搭建指南 v0.5ap 铸思阁/ HomeLab / 作者&#xff1a; exFluex 本文第一发表网站为 铸思阁 https://blog.oyxf.top/index.php/2021/03/19/home_web/ 为了良好的阅读体验及对文章错漏、问题得到我及时的反馈请前往 铸思阁 阅读 大部分情况下云服务器拥有…

查看网络情况 ping 大包 和 tracert 、 traceroute

2019独角兽企业重金招聘Python工程师标准>>> 严禁Ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。 Linux下Ping包的默认大小为64Byte,次数不限。但有时我们需要尝试Ping大数据包,来测试网络的状况,这时,就要指定Ping包的大小了。 Linux下Ping大数据…

阿里云学生服务器购买指南(用途和指南)

概述 现在国内知名大牌云服务商&#xff08;阿里云&#xff09;对学生都是很优惠的&#xff0c;阿里云学生服务器&#xff0c;阿里云也推出了9.5元购买云服务器的优惠活动&#xff0c;是一款固定的优惠套餐&#xff0c;包含特价云服务器&#xff0c;但是好多学生却不知道在哪里…