solr快速上手:配置IK中文分词器(七)

news/2025/1/12 13:48:39/

0. 引言

solr作为搜索引擎,常用在我们对于搜索速度有较高要求且大数据量的业务场景,我们之前已经配置过英文分词器,但是针对中文分词不够灵活和实用,要实现真正意义上的中文分词,还需要单独安装中文分词器

solr快速上手:solr简介及安装(一)
solr快速上手:核心概念及solr-admin界面介绍(二)
solr快速上手:managed-schema标签详解(三)
solr快速上手:创建核心/索引/core(四)
solr快速上手:配置从mysql同步数据(五)
solr快速上手:实现从mysql定时自动同步数据(六)

1. IK中文分词器简介

IK中文分词器是一个国人开源的,基于java开发的轻量级中文分词器,能够实现对中文进行自然语言处理,并且支持自定义分词库,IK分词器本身也支持英文和数字的分词,满足中英文混合的业务场景。

为什么需要中文分词器?
我们可以在solr Analysis中进行分词,采用默认的英文分词器,可以看到中文被切分成了单个汉字,而按照自然语言来讲,我们更希望将其分词为,中国,man,这样本身也符合语言习惯,同时不用单个字分词,也节约了存储空间,所以我们需要更加灵活的中文分词器
在这里插入图片描述

这种
在这里插入图片描述

2. IK分词器安装

1、下载ik分词器,版本与solr版本保持一致
下载地址:https://central.sonatype.com/artifact/com.github.magese/ik-analyzer/8.2.0

在这里插入图片描述

Versions页面,选择solr对应版本的,点击Browse,选择ik-analyzer-8.2.0.jar下载

在这里插入图片描述

2、将该jar包上传到solr服务器的server/solr-webapp/webapp/WEB-INF/lib目录下,或者你也可以直接在服务器上使用wget指令下载

在这里插入图片描述

3、修改对应核心的managed-schema(或schema.xml)配置文件,新建一个字段类型text_ik

<fieldType name="text_ik" class="solr.TextField"><analyzer type="index"><tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType>

4、同时我们把需要修改分词器的字段的分词器调整一下,比如这里我们将remarks字段修改为中文分词器

<field name="remarks" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />

在这里插入图片描述

5、重启solr

service solr stop
service solr start

这里因为我的solr配置了开机自启,加入了service,所以可以直接用service管理启动停止,如果没有配置使用solr本身的启动停止指令即可

./bin/solr stop -all
./bin/solr start -force

6、查看分词效果

我们再次进行分词,这次选择中文分词器,然后查看分词效果,可以看到这次分词就成了词组,而不是之前的单个字,这样后续的匹配效果也更佳

在这里插入图片描述

同时因为remarks字段配置了IK分词器,我们也直接直接用该字段测试分词效果

在这里插入图片描述

配置中文分词器后,历史数据没有达到对应效果

我们修改分词器后,使用remarks查询,发现尽管有数据,还是查询不出来

在这里插入图片描述

我们上述进行分词测试,“送货”应该是能查询出来的,但是没有匹配上,这是因为怎么回事呢?

这是由于历史的数据已经按照之前的分词配置创建好了分词库,修改分词器并不会让历史数据重新创建分词,想实现这个效果,那就要重新加载索引数据

(1)删除历史索引数据

在这里插入图片描述
(2)重新加载索引
在这里插入图片描述
(3)重启solr

(4)重新导入,即使用full-import即可

在这里插入图片描述
(5)再次查询,发现已经可以正常查询出数据了

在这里插入图片描述

3. 总结

至此,我们针对IK中文分词器的简单使用就结束了, 实际上上手使用并不困难,难的是在复杂业务场景下的各类性能需求,但这些也不是我们在“快速上手”专栏所需考虑的了,对于陌生知识,也希望大家保持好奇,减少恐惧,大部分的使用场景实际上是简单的, 但同时也要对熟悉的知识保持敬畏,永远不要自大

还是那句话,动手试试吧!


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

相关文章

给虚拟机换桌面壁纸

Ubuntu budgie的桌面环境&#xff0c;他们一直不给我换&#xff0c;那我想换一个好看的壁纸&#xff1b; scp指令 我刚开始用的scp指令&#xff0c;不知道为什么一直连不上&#xff0c;所以没有用这个来上传图片文件&#xff1b; scp local_file remote_usernameremote_ip:re…

用批处理一键更换想要的壁纸.bat适用各版本Windows系统

话不多说&#xff0c;直接上代码&#xff1a; echo off reg add "hkcu\control panel\desktop" /v Wallpaper /d "%~dp0壁纸名称.jpg" /f reg add "hkcu\control panel\desktop" /v WallpaperStyle /t REG_DWORD /d 2 /f RunDll32.exe USER32.D…

批处理(bat)更换widows电脑壁纸

同事特别诙谐&#xff0c;把分布式渲染的服务器壁纸都换成整蛊我的&#xff0c;我远程上去又换成整蛊他的&#xff0c;但换来换去有点麻烦&#xff0c;我想个办法让他一登录服务器就自动换成整蛊他的壁纸&#xff0c;这样就随他怎么换&#xff0c;只要他退出再登录进来&#xf…

利用bat获取windows桌面壁纸

新建bat文件&#xff0c;贴入以下代码即可 echo off set tmp%~dp0\tmp set res%localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets echo Store image Temporary directory %tmp%for %%i in ( %tmp% ) do if not exist %%i md…

wallpaper视频一键转移

功能 将wallpaper目录下面的视频转移到自己所需的目录下面使用 三个输入&#xff1a; 第一个是输入的wallpaper存放壁纸的地址 其中地址就为 E:\steam\Steam\steamapps\workshop\content\431960 如果不知道也可以右键壁纸查看 第二个输入的是下载的时间&#xff0c; 意思…

Redis集群(分布式缓存):详解持久化、主从同步原理、哨兵机制、Cluster分片集群,实现高并发高可用

0、引言 单机式Redis存在以下问题&#xff0c;因此需要Redis集群化来解决这些问题 1、持久化 1.1 RDB&#xff08;Redis Database Backup file &#xff09;持久化 Redis数据快照&#xff0c;简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后&#xff0c…

Vision Transformer综述 part I Transformer简介及组成

Vision Transformer综述 1. Transformer简介2. Transformer组成2.1 Self-AttentionMulti-Head Attention&#xff08;多头注意力&#xff09; 2.2 Transformer的其他关键概念2.2.1 Feed-Forward Network 前馈网络2.2.2 Residual Connection 残差连接2.2.3 解码器中的最后一层 1…

数据表字段冗余设计

数据表字段冗余设计是指在一个表中存储重复的数据字段。 这种设计违反了数据库的范式化原则&#xff0c;即避免数据冗余。然而&#xff0c;在某些情况下&#xff0c;字段冗余设计可以提供性能优化、简化查询或满足特定的业务需求。 查询性能优化&#xff1a;在一个表中存储重复…