【Solr分词器】

news2025/1/23 7:57:23

Solr分词器

一,什么是solr分词器?

前面已经提到过,Solr是一个高性能的全文检索服务,基于Apache Lucene的,Lucene是一个用Java编写的开源的信息检索库,为全文索引和搜索提供了基础功能。 在Solr中,分词器(Tokenizer)是分析器(Analyzer)的一部分,用于将文本字段分割成单独的词汇单元或标记(tokens),这些标记是构成索引的基本元素,决定了哪些内容可以被搜索到。

二,分词器的作用
  • 文本分割: 将一段连续的文本按照一定的规则拆分成一个个独立的,有意义的单词或者字符序列
  • 降低复杂度: 通过分词,可以使查询更加高效,因为查询时也是根据同样的分词规则来匹配相应的标记;
  • 提高准确性: 合适的分词可以让搜索结果更加的准确,因为不同的语言有不同的语法结构和词汇使用习惯
三,配置分词器

在solr中配置多种分词器可以通过编辑 schema.xml 或 managed-schema 文件来实现,这取决于你使用的Solr版本,从Solr 5.0 开始,默认使用managed-schema文件,它提供了通过solr的RESTful API来管理模式的能力,而不需要直接编辑xml文件

如何配置:

3.1 选择合适的分析链
  • 确定哪些字段需要进行分词处理
  • 决定是否需要为不同的语言或者内容类型配置不同的分词器
3.2 编辑schema文件
  • 如果使用的时Solr 5.0 以上的版本,通过Solr admin UI 或者Solr 的REST ful API 来修改managed-schema 文件
  • 对于更早的版本,可以通过编辑conf/schema.xml文件
3.3 定义字段类型
  • 在chema.xml 文件或者managed-schema中添加元素
  • 每个可以可以包含一个或者多个分析器(Analyzer),每个分析器可以指定不同场景下的分词器(Tokenizer)和过滤器(Filter)。例如,索引时和查询时可能需要不同的分词规则
    元素中的type属性用来指定分析器应用于文本的不同阶段。Solr的分析过程可以分为索引(indexing)和查询(quering)两个主要的阶段,在这两个阶段中,文本可能需要用不同的方式来处理,所以type属性有下面几种常见的值:
    1. Index:
    • 当type="index"时,表示改分析器配置将用于索引全文时对字段内容进行分析。
    • 这个类型的分析器决定了如何将原始数据转换成索引中的词汇单元(tokens),以便后续搜索
    1. query:
    • 当type="query"时,表示该分析器配置将用于解析用户输入的查询字符串。
    • 查询分析器通常会执行和索引分析器类似的步骤,但有时可能会有所不同,比如在查询时应用额外的同义词扩展或者停用词过滤等优化。
    1. first_phase, second_phase(适用于某些特定的分词器,如PathHierarchyTokenizerFactory)
    • 某些特殊的分词器可能支持多阶段分析,这允许更复杂的文本处理逻辑
    • first_phase 和second_phase分别指定了第一阶段和第二阶段的分析规则
  1. default或者省略type属性
  • 如果没有明确的指定type属性,或者将其设置为default,那么该分析器配置将同时应用于索引和查询两个阶段
  • 这意味着索引时和查询时都将使用相同的分词和过滤规则

选择适当的type值对于确保你的搜索应用能够正确地工作非常重要。例如,如果你的索引分析器移除了停用词,而查询分析器没有这么做,那么包含这些停用词的查询就可能无法匹配到相应的文档。同样的,如果查询分析器添加了同义词扩展,但是索引分析器没有做同样的事,那么你可能会得到过多的不准确的结果

为了实现最佳的搜索体验,通常建议根据具体需求分别配置索引个查询分析器,来确保两者之间的匹配度最高。此外,Solr提供了一个叫做analysis 的页面工具, 可以帮助你测试不同分析器配置,并查看他们是如何处理给定文本的。
在这里插入图片描述

3.4 添加分词器和过滤器
  • 在每个标签的内部,可以定义和一系列的
  • 分词器负责将文本分割成词汇单元,而过滤器则用于进一步处理这些词汇单元,如转换为小写,去除停用词等
3.5 关联字段与字段类型
  • 定义好字段类型后,需要创建或者更新对应的元素,并将其type属性设置为你刚刚创建的字段类型名称
3.6 重启solr或者重新加载核心
  • 修改完配置后,如果是在schema.xml中做出的更改,通常需要重启solr或者重新加载受影响的核心(Core)来让更改生效
  • 如果是通过Solr admin UI或者 managed-schema,一般情况下会立即生效

一下是一个solr中配置了一个支持中文分词的字段类型

<fieldType name="text_zh" calss="solr.TextField">
<analyzer>
<!-- 使用smart Chinese 分词器-->
<tokenizer class= 'solr.smartcn.SmartChineseSentenceTokenizerFactory'/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

然后再创建一个字段 并使用这个字段类型

<field name="content_zh" type="text_zh" indexed="true" stored="true">

再实际的配置中会根据你的需求和使用的具体分词库有所不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280795.html

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

相关文章

OS2.【Linux】基本命令入门(1)

目录 1.操作系统是什么? 2.好操作系统的衡量标准 3.操作系统的核心工作 4.在计算机上所有行为都会被转换为硬件行为 5.文件 6.简单介绍一些基本命令 1.clear 2.pwd 3.ls 1.ls -l 2.隐藏文件的创建 3.ls -al 4.ls -ld 5.ls -F(注意是大写) 4.cd 1.cd .. "…

LabVIEW处理复杂系统和数据处理

LabVIEW 是一个图形化编程平台&#xff0c;广泛应用于自动化控制、数据采集、信号处理、仪器控制等复杂系统的开发。它的图形化界面使得开发人员能够直观地设计系统和算法&#xff0c;尤其适合处理需要实时数据分析、高精度控制和复杂硬件集成的应用场景。LabVIEW 提供丰富的库…

激光雷达和相机早期融合

通过外参和内参的标定将激光雷达的点云投影到图像上。 • 传感器标定 首先需要对激光雷达和相机&#xff08;用于获取 2D 图像&#xff09;进行外参和内参标定。这是为了确定激光雷达坐标系和相机坐标系之间的转换关系&#xff0c;包括旋转和平移。通常采用棋盘格等标定工具&…

C++----STL(vector)

vector的介绍 vector的文档介绍&#xff1a;cplusplus.com/reference/vector/vector/ 1.基本概念 简单来说&#xff0c;vector是表示可以改变大小的数组的顺序容器。使用连续的存储位置来存储元素&#xff0c;因此可以通过常规指针的偏移量来高效访问。 2.内部机制 vector…

Airflow:BranchOperator实现动态分支控制流程

Airflow是用于编排复杂工作流的开源平台&#xff0c;支持在有向无环图&#xff08;dag&#xff09;中定义、调度和监控任务。其中一个关键特性是能够使用BranchOperator创建动态的、有条件的工作流。在这篇博文中&#xff0c;我们将探索BranchOperator&#xff0c;讨论它是如何…

rocketmq-MQClientInstance-单进程多生产者组多消费者组的实例模型

多生产者组多消费者组的思考 思考下。当一个client&#xff0c;订阅多个consumergroup、多个productgroup时。此时进程的线程模型是如何的&#xff1f; 之前文章有分析到。消费者组&#xff0c;是有多个线程去共同协作的。 假设订阅2个consumergroup&#xff0c; 线程数量是2倍…

nuxt3项目打包部署到服务器后配置端口号和开启https

nuxt3打包后的项目部署相对于一般vite打包的静态文件部署要稍微麻烦一些&#xff0c;还有一个主要的问题是开发环境配置的.env环境变量在打包后部署时获取不到&#xff0c;具体的解决方案可以参考我之前文章 nuxt3项目打包后获取.env设置的环境变量无效的解决办法。 这里使用的…

Class ‘com.xxx.xxx‘ not found in module ‘xxxx‘ 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. 问题所示 启动项目的时候,出现如下Bug: Class ‘com.xxx.xxx‘ not found in module ‘xxxx‘截图如下: 2. 原理分析 Java 项目中引用的类未能被正…

ngrok同时配置多个内网穿透方法

一、概要 ngrok可以用来配置免费的内网穿透&#xff0c;启动后就可以用外网ip:端口访问到自己计算机的某个端口了。 可以用来从外网访问自己的测试页面&#xff08;80、8080&#xff09;、ftp文件传输&#xff08;21&#xff09;、远程桌面&#xff08;3389&#xff09;等。 …

OGG 19C 集成模式启用DDL复制

接Oracle19C PDB 环境下 OGG 搭建&#xff08;PDB to PDB&#xff09;_cdb架构 配置ogg-CSDN博客&#xff0c;给 pdb 环境 ogg 配置 DDL 功能。 一个报错 SYShfdb1> ddl_setup.sqlOracle GoldenGate DDL Replication setup scriptVerifying that current user has privile…

【计算机网络】- 应用层HTTP协议

目录 初识HTTP 什么是HTTP 版本 HTTPS 模型 HTTP抓包工具 为什么使用 抓包工具的下载 下载后的重要操作 Fiddler的使用 HTTP请求与响应的基本格式 HTTP请求基本格式​编辑 HTTP响应基本格式 协议格式总结❗️❗️❗️​编辑 HTTP 详解 认识 URL URL基本格式 …

基于SpringBoot+Vue的旅游管理系统【源码+文档+部署讲解】

系统介绍 基于SpringBootVue实现的旅游管理系统采用前后端分离架构方式&#xff0c;系统设计了管理员、用户两种角色&#xff0c;系统实现了用户登录与注册、个人中心、用户管理、景点信息管理、订票信息管理、用户评价管理、景点咨询、轮播图管理等功能。 技术选型 开发工具…

Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)

在本系列的上篇中&#xff0c;小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案&#xff0c;用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍&#xff0c;为大家介绍如何创建主代理&#xff0c;将多个子代理挂载到主代理…

【Ubuntu】安装SSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端&#xff1a; sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端&#xff1a; sudo systemctl start ssh贰、配置SSH&#xff08;可跳过&#xff09; 配置文件 …

后端开发Web

Maven Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具 Maven的作用 依赖管理 方便快捷的管理项目依赖的资源&#xff08;jar包&#xff09;&#xff0c;避免版本冲突问题 统一项目结构 提供标准、统一的项目结构 项目构建 标准跨平台(…

STM32项目分享:智能宠物喂食系统(升级版)

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV19hmMY6ErU…

【程序化广告】相关技术(RTB竞价原理、Cookie映射流程、数据统计原理、程序化创意、防作弊方法)

上一篇介绍了【程序化广告】广告投放流程/漏斗/要素/策略/指标&#xff0c;本篇介绍一下程序化广告所使用到的相关技术&#xff0c;包括RTB竞价原理、Cookie映射流程、数据统计原理、程序化创意、防作弊方法等。 1. RTB竞价原理 1&#xff09;竞价逻辑 用户开启电脑&#xf…

STM32补充——IAP

0 前置知识&#xff1a; FLASH相关内容&#xff1a;前往STM32补充——FLASH STM32三种烧录方式&#xff08;看看就行&#xff09;&#xff1a; 1.ISP&#xff1a;In System Programming&#xff08;在系统编程&#xff09; 执行芯片厂商的 Bootloader 程序进入 ISP 模式&…

Spring Boot中选择性加载Bean的几种方式

说明&#xff1a;用过Spring框架的都知道其自动装配的特性&#xff0c;本文介绍几种选择性加载Bean的方式。Spring自动装配参考以下两篇文章&#xff1a; 基于SpringBoot的三层架构开发&统一响应结果 SpringBoot自动装配原理简单分析 ConditionalOnProperty Conditiona…

AI刷题-策略大师:小I与小W的数字猜谜挑战

问题描述 有 1, 2,..., n &#xff0c;n 个数字&#xff0c;其中有且仅有一个数字是中奖的&#xff0c;这个数字是等概率随机生成的。 Alice 和 Bob 进行一个游戏&#xff1a; 两人轮流猜一个 1 到 n 的数字&#xff0c;Alice 先猜。 每完成一次猜测&#xff0c;主持会大声…