当前位置: 首页 > news >正文

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

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

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

相关文章:

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

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

【软件测试】接口测试工具APIpost

说实话&#xff0c;了解APIpost是因为&#xff0c;我的所有接口相关的文章下&#xff0c;都有该APIpost水军的评论&#xff0c;无非就是APIpost是中文版的postman&#xff0c;有多么多么好用&#xff0c;虽然咱也还不是什么啥网红&#xff0c;但是不知会一声就乱在评论区打广告…...

第六章 假言:那么、就、则;才。

第六章 假言&#xff1a;那么、就、则&#xff1b;才。 第一节 假言-公式化转换-等价矛盾 真题&#xff08;2012-38&#xff09;-假言-A→B的公式化转换-A→B的等价命题&#xff1a;①逆否命题&#xff1a;非B→非A。 38.经理说&#xff1a;“有了自信不一定赢。”董事长回…...

[干货] 如何解决慢SQL?详细分析和优化实践!

慢SQL优化实践 本篇博客将分享如何通过慢SQL分析工具和常用优化手段&#xff0c;来解决慢SQL的问题。首先让我们看一下慢SQL的定义。 什么是慢SQL 简单来说&#xff0c;慢SQL指的是执行时间较长的SQL语句。在数据库中&#xff0c;一个查询的运行时间往往会受到多种因素的影响…...

数据库实验三 数据查询二

任务描述 本关任务&#xff1a;查询来自借阅、图书、读者数据表的数据 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何多表查询 相关知识 查询多个数据表 在实际应用中&#xff0c;查询经常会涉及到几个数据表。 基于多个相关联的数据表进行的查询称为连接查询…...

论文笔记与实战:对比学习方法MOCO

目录 1. 什么是MOCO2. MOCO是干吗用的3. MOCO的工作原理3.1 一些概念1. 无监督与有监督的区别2. 什么是对比学习3. 动量是什么 3.2 MOCO工作原理1. 字典查找2. 如何构建一个好的字典3. 工作流程 3.3 &#xff08;伪&#xff09;代码分析 4. 其他一些问题5. MOCO v2和MOCO v35.1…...

大数据Doris(三十八):Spark Load 导入Hive数据

文章目录 Spark Load 导入Hive数据 一、Spark Load导入Hive非分区表数据 1、在node3hive客户端&#xff0c;准备向Hive表加载的数据 2、启动Hive&#xff0c;在Hive客户端创建Hive表并加载数据 3、在Doris中创建Hive外部表 4、创建Doris表 5、创建Spark Load导入任务 6…...

【Prometheus】mysqld_exporter采集+Grafana出图+AlertManager预警

前提环境&#xff1a;已经安装和配置好prometheus server 所有组件对应的版本&#xff1a; prometheus-2.44.0 mysqld_exporter-0.14.0 grafana-enterprise-9.1.2-1.x86_64.rpm alertmanager-0.25.0 prometheus-webhook-dingtalk-2.1.0 简介 mysql_exporter是用来收集MysQL或…...

softmax 函数

https://blog.csdn.net/m0_37769093/article/details/107732606 softmax 函数如下所示&#xff1a; y i exp ⁡ ( x i ) ∑ j 1 n exp ⁡ ( x j ) y_{i} \frac{\exp(x_{i})}{\sum_{j1}^{n}{\exp(x_j)}} yi​∑j1n​exp(xj​)exp(xi​)​ softmax求导如下&#xff1a; i j…...

【SpringMVC】拦截器和过滤器之间的区别

过滤器 拦截器 调用机制 基于函数的回调 基于反射机制(动态代理) 依赖关系 依赖Servlet容器 不依赖Servlet容器 作用范围 对几乎所有的请求起作用 只对action请求起作用 访问范围 不能访问action上下文、栈 可以访问action上下文、栈 action生命周期 中的调用次数…...

springboot第25集:实体类定义规则

PO&#xff1a;持久化对象&#xff0c;一个PO对象对应一张表里面的一条记录。全部对应 VO&#xff1a;View视图对象&#xff0c;用来在页面中展示数据的&#xff0c;页面需要哪些字段属性就添加哪些&#xff0c;查询出来之后赋值操作比PO对象要简单。所以提高性能。 DTO&#x…...

【python】—— python的基本介绍并附安装教程

前言&#xff1a; 今天&#xff0c;我将给大家讲解关于python的基本知识&#xff0c;让大家对其有个基本的认识并且附上相应的安装教程以供大家参考。接下来&#xff0c;我们正式进入今天的文章&#xff01;&#xff01;&#xff01; 目录 前言 &#xff08;一&#xff09;P…...

浏览器跨域请求

跨域是浏览器的一种同源策略&#xff0c;所以该概念只存在于通过浏览器访问服务里。 如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的&#xff0c;浏览器只是针对同源策略的一种实现 请求的url地址,必须与浏览器上的…...

什么,你还在用 momentJs 处理相对时间

我想&#xff0c;下面这段代码&#xff0c;你是不是在开发中常常这样使用来计算距离现在过去了多长时间&#xff1a; import moment from moment // 61k (gzipped:19.k) function Relative(props) {const timeString moment(props.date).fromNow()return <>{timeString…...

三维模型 工程图

飞机 Crankshaft飞机发动机手动冲压机包装成型机械-充填机械设备10数控等离子切割机床铜线缠绕机机床-磨床08机床-磨床04(附工程图)机床-车床数字纤维缠绕机机械臂液压钳机床-车床06挤出机机械手-09机械手模型库六柴油发动机中央空调机柜空调机机床-钻床三维设计电脑服务器机箱…...

我用ChatGPT写2023高考语文作文(二):全国乙卷

2023年 全国乙卷 适用地区&#xff1a;河南、江西、甘肃、青海、内蒙古、宁夏、新疆、陕西 吹灭别人的灯&#xff0c;并不会让自己更加光明&#xff1b;阻挡别人的路&#xff0c;也不会让自己行得更远。 “一花独放不是春&#xff0c;百花齐放春满园。”如果世界上只有一种花朵…...

java版本工程项目管理系统平台源码,助力工程企业实现数字化管理

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…...

代码随想录第55天

1.判断子序列&#xff1a; 动态规划五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度为dp[i][j]。 注意这里是判断s是否…...

算法设计与分析(填空专题)

文章目录 填空题填空题 设有一稀疏图 G,则 G 采用 邻接表 存储较省空间。 算法的时间复杂性是指算法中 元运算 执行次数。 分治法的基本思想是将一个规模为 n 的问题分解为与原问题 相同 的 k 个规模较小且互相独立的子问题。 贪心算法中每次做出的贪心选择都是 当前的 最优选…...

Ubuntu22.04 K8s1.27.2

Ubuntu22.04 && K8s1.27.2 1. 服务器配置 IpServerMEM192.168.56.11k8smaster6G192.168.56.16k8snode14G192.168.56.17k8snode24G 2. 获取源 $ sudo apt-get update $ sudo apt-get install -y apt-transport-https ca-certificates curl# packages.cloud.google.c…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...