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

news2024/12/23 9:31:11

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.coloradmin.cn/o/631036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【shell 基础13】输入输出与重定向

文章目录 一. 标准输入和标准输出二、重定向1. 定义2. 输出的重定向3. 对标准错误输出重定向4. 输入的重定向 一. 标准输入和标准输出 linux中有三种标准输入输出&#xff0c;分别是STDIN&#xff0c;STDOUT&#xff0c;STDERR&#xff0c;文件描述符分别是 0、1、2。 当运行…

Android Paging3分页+ConcatAdapter+空数据视图+下拉刷新(SwipeRefreshLayout)+加载更多+错误重试 (示例)

文章目录 引入库数据模型定义分页 adapter加载更多 adapter空数据 adapter分页数据源ViewModel 提供加载数据源的方法结合以上实现的 Fragment数据重复问题 引入库 implementation androidx.paging:paging-runtime-ktx:3.1.1paging 库&#xff0c;目前还是有点小bug &#xff…

Java开发技巧-数据结构-使用HashSet判断主键是否存在、使用Pair成对结果返回/Triple三个对象返回

场景 Java中使用HashSet判断主键是否存在 HashSet实现Set接口&#xff0c;由哈希表&#xff08;实际上是HashMap&#xff09;实现&#xff0c;但不保证set的迭代顺序&#xff0c;并允许使用null元素。 HashSet的时间复杂度跟HashMap一致&#xff0c;如果没有哈希冲突则时间复…

EXCEL函数笔记1(数学函数、文本函数、日期函数)

数学函数 取整&#xff1a;INT(number) 取余&#xff1a;MOD(number,除数) 四舍五入&#xff1a;ROUND(number&#xff0c;保留几位小数) 取绝对值&#xff1a;ABS(number) 根号处理&#xff1a;SQRT&#xff08;number&#xff09; 0到1随机数&#xff1a;RAND&#xff08;&am…

Python神器Anaconda图文安装教程

来源&#xff1a;投稿 作者&#xff1a;Fairy 编辑&#xff1a;学姐 Anaconda简介 Anaconda是一种数据科学和机器学习的开发环境&#xff0c;它包含了大量的Python包、工具和库&#xff0c;以及可视化界面和集成开发环境。「Anaconda可以方便地管理Python环境和安装第三方软件…

⑧电子产品拆解分析-1拖4USB拓展坞

⑧电子产品拆解分析-1拖4USB拓展坞 一、功能介绍二、电路分析以及器件作用1、内部电路拆解 三、参考资料学习 一、功能介绍 ①USB2.0一拖四通讯&#xff1b;②具备OTG功能&#xff0c;可适配大部分USB接口设备&#xff1b; 二、电路分析以及器件作用 1、内部电路拆解 分析&am…

【分布式存储】聊一下分布式存储中分片机制

为什么需要分片 在服务端领域&#xff0c;主要特点是支撑7*24小时不间断的服务&#xff0c;而最终对各种行为会生产对应的数据&#xff0c;比如用户登陆/注册&#xff0c;发起订单交易、支付、身份验证&#xff0c;短信验证等情况都需要存储起来&#xff0c;其中包括各种各样的…

浏览器工作原理分析与首屏加载

正文 1. 页面加载时间线 我们先来一个老生常谈的面试题&#xff1a;从输入 URL 到页面加载完成的过程中都发生了什么事情&#xff1f; 这个面试题本身也是一个开放题&#xff0c;不同方向的工程师侧重也不一样。大抵的过程可以简化为&#xff1a; st>start: 输入URL e>…

WPS表格处理

wps表格中公式出来的内容如何转为纯文本 选中公式算出的结果区域&#xff0c;复制&#xff0c;在原区域上右键&#xff0c;选择性粘贴为数值&#xff0c;就转成文本了&#xff0c;当然公式也就消除了。 wps表格如何设置整列公式&#xff1f; 1、先来看看下面这个例子需做出商…

图像分割算法

文章目录 前言1. 基于区域的分割方法1.1 区域生长算法1.2 区域分裂合并算法1.3 分水岭算法1.3.1 分水岭算法原理1.3.2 opencv-python中分水岭算法的应用 2. 基于图的分割方法2.1 Grabcut图像分割 源码仓库地址 前言 图像分割是指将图像分成若干互不重叠的子区域&#xff0c;使…

如何卸载MySQL数据库以及删除所有有关信息

目录 前言 第一步 卸载mysql程序 第二步 删除安装目录的mysql项目 第三步 删除MySQL的相关注册表 第四步 删除C盘下的 C:\ProgramData\MySQL所有的文件 第五步 删除 C:\Documents and Settings\All Users\Application Data\MySQL 下的文件夹 第六步 重启电脑 尾语 前言…

使用crictl pull时报错:“unknown service runtime.v1alpha2.ImageService”

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 引言&#xff1a; crictl 是 kubernetes cri-tools 的一部分&#xff0c;是专门为 kubernetes 使用 …

【详解】String、StringBuffer、StringBuilder的基本用法及区别

一、String 1.常用的输入方式 Scanner in new Scanner&#xff08;System.in&#xff09;; //输入方法一 String s1 in.next(); //in.next(): 读到空格就停止扫描&#xff08;输入&#xff09;。//输入方法二 String s2 in.nextLine(); //in.nextLine():读到回车就停止扫描…

Avalon 学习系列 (一) —— 初步入门

相关链接 Avalon github地址 Avalon 快速入门 基于 Avalon的组件库-OniUI Avalon 入门教程 Avalon CDN 简介 Avalon 是司徒正美开发和维护的一款基于虚拟 DOM 与属性劫持的迷你、 易用、 高性能 的 前端 MVVM 框架&#xff0c;最早发布于2012.09.15。 其拥有超优秀的兼容性&a…

Python中的模块包第三方库详解

模块&包 模块 一个.py文件就是一个模块&#xff0c;里面是一些函数和变量&#xff0c;需要的时候可以导入。 模块命名规范: 1.以英文开头&#xff0c;不出现中文 2.模块名不应与系统内置函数重名 包 包本身就是一个文件夹&#xff0c;如果文件夹内有__init__.py文件&…

浅谈iic时序

一、iic通信核心要点 在iic通信中&#xff0c;进行数据传输的时候&#xff0c;遵循在scl时钟线高的时候保持sda电平稳定&#xff0c;这个电平值就是要写入的值&#xff0c;然后&#xff0c;在scl时钟线拉低的时候去改变sda上的值&#xff0c;达到自己想要输出的值 所以说&…

如何做架构设计

1、设计很重要 我们可以看一下周边的事物&#xff0c;那些好的东西&#xff0c;他们并不会天然存在&#xff0c;都是被设计出来的&#xff0c;因此设计就是创造和改善事物的重要过程。设计的重要之处在于&#xff0c;最初的设计往往决定最终的结果&#xff0c;甚至决定着事物的…

端口扫描伪装技术实践

端口扫描伪装技术实践 1.-f&#xff08;分段传输&#xff09;2.-mtu&#xff08;使用指定的MTU&#xff09;3.-D&#xff08;使用诱饵主机隐蔽扫描&#xff09;4.--source-port&#xff08;源端口欺骗&#xff09;5.--data-length &#xff08;发送报文时附加随机数据&#xff…

入职字节外包一个月,我离职了····

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

电子元器件解析02之电容(二)——电容分类与应用场景

书接上文&#xff1a;电子元器件解析02之电容(一)——定义与性能参数&#xff1a;https://blog.csdn.net/weixin_42837669/article/details/131142286 摘要 本文总结了各种不同介质电容的特性&#xff0c;包括陶瓷电容、电解电容、薄膜电容等&#xff1b;同时对一些特殊场合的电…