news 2026/5/14 6:45:22

【详解】Solr配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【详解】Solr配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer

目录

Solr配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer

1. 环境准备

2. 安装 IKAnalyzer

2.1 下载 IKAnalyzer

2.2 配置 Solr

3. 安装 pinyinAnalyzer

3.1 下载 pinyinAnalyzer

3.2 配置 Solr

4. 结合使用 IKAnalyzer 和 pinyinAnalyzer

1. 配置IKAnalyzer

solrconfig.xml

schema.xml

2. 配置PinyinAnalyzer

solrconfig.xml

schema.xml

3. 重启Solr

4. 测试

1. IKAnalyzer 配置

下载和安装 IKAnalyzer

配置 schema.xml

2. pinyinAnalyzer 配置

下载和安装 pinyinAnalyzer

配置 schema.xml

重启 Solr


Solr配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer

在处理中文搜索时,合适的分词器选择对于提高搜索质量和用户体验至关重要。Apache Solr 是一个高性能的全文搜索引擎服务器,支持多种语言的文本处理,包括中文。本文将详细介绍如何在 Solr 中配置两个常用的中文分词器:IKAnalyzer 和 pinyinAnalyzer。

1. 环境准备

  • Solr 版本:本文以 Solr 8.x 为例。
  • Java 版本:确保安装了 JDK 8 或更高版本。
  • 操作系统:本文示例基于 Linux 操作系统,但配置过程在 Windows 上也基本相同。

2. 安装 IKAnalyzer

2.1 下载 IKAnalyzer

首先,需要从 ​​GitHub​​ 或其他可信源下载最新版本的 ​​IKAnalyzer​​ 相关 JAR 包。

2.2 配置 Solr
  1. 复制 JAR 文件: 将下载的IKAnalyzerJAR 文件复制到 Solr 核心的lib目录下。例如,如果你的核心名为mycore,路径可能是solr-8.x.x/server/solr/mycore/lib/
  2. 修改 schema.xml: 打开solr-8.x.x/server/solr/mycore/conf/schema.xml文件,添加以下内容:
< fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> </analyzer> </fieldType>
  1. 重启 Solr: 修改完配置文件后,重启 Solr 服务以使更改生效。
  2. 测试分词效果: 使用 Solr 的分析页面(http://localhost:8983/solr/mycore/analysis)来测试text_ik字段类型的分词效果。

3. 安装 pinyinAnalyzer

3.1 下载 pinyinAnalyzer

同样,从 ​​GitHub​​ 或其他可信源下载 ​​pinyin4j​​ 的 JAR 包。

3.2 配置 Solr
  1. 复制 JAR 文件: 将下载的pinyin4jJAR 文件复制到 Solr 核心的lib目录下。
  2. 修改 schema.xml: 打开solr-8.x.x/server/solr/mycore/conf/schema.xml文件,添加以下内容:
< fieldType name="text_pinyin" class="solr.TextField"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="com.chenlb.mmseg4j.solr.MMsegTokenizerFactory" mode="complex"/> <filter class="com.github.benmanes.caffeine.cache.SolrPinyinFilterFactory" keepFirstPinyin="false" keepFullPinyin="true" keepNonePinyinWord="true" keepOriginalWord="true" nonePinyinWordReplacement="" /> </analyzer> </fieldType>
  1. 重启 Solr: 修改完配置文件后,重启 Solr 服务以使更改生效。
  2. 测试分词效果: 使用 Solr 的分析页面(http://localhost:8983/solr/mycore/analysis)来测试text_pinyin字段类型的分词效果。

4. 结合使用 IKAnalyzer 和 pinyinAnalyzer

为了同时利用 IKAnalyzer 的分词能力和 pinyinAnalyzer 的拼音转换功能,可以在 ​​schema.xml​​ 中定义一个新的字段类型,结合两者的优势:

<fieldType name="text_ik_pinyin" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> <filter class="com.github.benmanes.caffeine.cache.SolrPinyinFilterFactory" keepFirstPinyin="false" keepFullPinyin="true" keepNonePinyinWord="true" keepOriginalWord="true" nonePinyinWordReplacement="" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> <filter class="com.github.benmanes.caffeine.cache.SolrPinyinFilterFactory" keepFirstPinyin="false" keepFullPinyin="true" keepNonePinyinWord="true" keepOriginalWord="true" nonePinyinWordReplacement="" /> </analyzer> </fieldType>

在使用Apache Solr进行全文搜索时,为了支持中文分词和拼音分词,通常会配置​​IKAnalyzer​​​和​​PinyinAnalyzer​​。以下是如何在Solr中配置这两个分析器的示例代码。

1. 配置IKAnalyzer

首先,确保你已经下载了​​IKAnalyzer​​的jar包,并将其放置在Solr的​​lib​​目录下。然后,在​​solrconfig.xml​​文件中添加对​​IKAnalyzer​​的支持。

solrconfig.xml
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-analysis-extras-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib/" regex=".*\.jar" /> <requestHandler name="/update" class="solr.UpdateRequestHandler"> <lst name="defaults"> <str name="update.chain">ik</str> </lst> </requestHandler> <searchComponent name="query" class="solr.QueryComponent"> <lst name="defaults"> <str name="df">content</str> </lst> </searchComponent> <schemaFactory class="ManagedIndexSchemaFactory"> <lst name="managedSchemaResourceName"> <str name="name">managed-schema</str> </lst> </schemaFactory> <updateProcessor class="org.apache.solr.update.processor.AnalysisErrorHandlingUpdateProcessorFactory" name="ik"> <lst name="defaults"> <str name="errorHandler">ignore</str> </lst> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> </analyzer> </updateProcessor>
schema.xml

在​​schema.xml​​文件中定义字段类型和字段,使用​​IKAnalyzer​​进行分词。

<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> </analyzer> </fieldType> <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="content" type="text_ik" indexed="true" stored="true" multiValued="false" />
2. 配置PinyinAnalyzer

同样,确保你已经下载了​​PinyinAnalyzer​​的jar包,并将其放置在Solr的​​lib​​目录下。然后,在​​solrconfig.xml​​文件中添加对​​PinyinAnalyzer​​的支持。

solrconfig.xml
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-analysis-extras-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib/" regex=".*\.jar" /> <requestHandler name="/update" class="solr.UpdateRequestHandler"> <lst name="defaults"> <str name="update.chain">pinyin</str> </lst> </requestHandler> <searchComponent name="query" class="solr.QueryComponent"> <lst name="defaults"> <str name="df">content_pinyin</str> </lst> </searchComponent> <schemaFactory class="ManagedIndexSchemaFactory"> <lst name="managedSchemaResourceName"> <str name="name">managed-schema</str> </lst> </schemaFactory> <updateProcessor class="org.apache.solr.update.processor.AnalysisErrorHandlingUpdateProcessorFactory" name="pinyin"> <lst name="defaults"> <str name="errorHandler">ignore</str> </lst> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.pinyin.PinyinTokenizerFactory" keepFirstPinyin="true" keepFullPinyin="true" keepNonePinyin="true" keepOriginal="true" limitFirstPinyinLength="8" /> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.pinyin.PinyinTokenizerFactory" keepFirstPinyin="true" keepFullPinyin="true" keepNonePinyin="true" keepOriginal="true" limitFirstPinyinLength="8" /> </analyzer> </updateProcessor>
schema.xml

在​​schema.xml​​文件中定义字段类型和字段,使用​​PinyinAnalyzer​​进行分词。

<fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.pinyin.PinyinTokenizerFactory" keepFirstPinyin="true" keepFullPinyin="true" keepNonePinyin="true" keepOriginal="true" limitFirstPinyinLength="8" /> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.pinyin.PinyinTokenizerFactory" keepFirstPinyin="true" keepFullPinyin="true" keepNonePinyin="true" keepOriginal="true" limitFirstPinyinLength="8" /> </analyzer> </fieldType> <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="content_pinyin" type="text_pinyin" indexed="true" stored="true" multiValued="false" />
3. 重启Solr

完成上述配置后,重启Solr服务以使配置生效。

4. 测试

你可以通过Solr的管理界面或API来测试分词效果。例如,使用以下命令索引一些文档:

curl 'http://localhost:8983/solr/your_core_name/update?commit=true' -H 'Content-type:application/json' -d ' [ {"id": "1", "content": "中文分词测试"}, {"id": "2", "content_pinyin": "zhong wen fen ci ce shi"} ]'

然后查询这些文档,验证分词是否按预期工作:

curl 'http://localhost:8983/solr/your_core_name/select?q=content:中文分词' curl 'http://localhost:8983/solr/your_core_name/select?q=content_pinyin:zhong wen'

在处理中文搜索时,通常需要使用专门的中文分词器来提高搜索的准确性和效率。​​IKAnalyzer​​​ 和 ​​pinyinAnalyzer​​ 是两个常用的中文分词器。

1. IKAnalyzer 配置

​IKAnalyzer​​ 是一个开源的、基于Java的中文分词器,它提供了标准分词和智能分词两种模式。以下是如何在 Solr 中配置 ​​IKAnalyzer​​ 的步骤:

下载和安装 IKAnalyzer
  1. 下载 IKAnalyzer
  • 访问 ​​IKAnalyzer 官方 GitHub 仓库​​ 或其他可靠的源。
  • 下载 ​​ik-analyzer-xxx.jar​​ 文件。
  1. 将 IKAnalyzer 添加到 Solr
  • 将下载的 ​​ik-analyzer-xxx.jar​​ 文件复制到 Solr 的 ​​lib​​ 目录中,例如:​​$SOLR_HOME/server/solr-webapp/webapp/WEB-INF/lib/​​。
配置 schema.xml
  1. 编辑schema.xml​ 文件
  • 打开 ​​schema.xml​​ 文件,通常位于 ​​$SOLR_HOME/server/solr/configsets/_default/conf/​​ 目录下。
  • 添加 ​​IKAnalyzer​​ 的定义:
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> </analyzer> </fieldType>
  • ​useSmart​​ 参数用于控制分词模式:
  • ​false​​ 表示标准分词模式。
  • ​true​​ 表示智能分词模式。
  1. 应用新的字段类型
  • 在 ​​schema.xml​​ 中定义使用 ​​text_ik​​ 字段类型的字段,例如:
<field name="content" type="text_ik" indexed="true" stored="true"/>
2. pinyinAnalyzer 配置

​pinyinAnalyzer​​ 是一个用于将中文转换为拼音的分词器,常用于拼音搜索和排序。以下是如何在 Solr 中配置 ​​pinyinAnalyzer​​ 的步骤:

下载和安装 pinyinAnalyzer
  1. 下载 pinyinAnalyzer
  • 访问 ​​pinyin4j 官方网站​​ 或其他可靠的源。
  • 下载 ​​pinyin4j-xxx.jar​​ 文件。
  1. 将 pinyinAnalyzer 添加到 Solr
  • 将下载的 ​​pinyin4j-xxx.jar​​ 文件复制到 Solr 的 ​​lib​​ 目录中,例如:​​$SOLR_HOME/server/solr-webapp/webapp/WEB-INF/lib/​​。
配置 schema.xml
  1. 编辑schema.xml​ 文件
  • 打开 ​​schema.xml​​ 文件,通常位于 ​​$SOLR_HOME/server/solr/configsets/_default/conf/​​ 目录下。
  • 添加 ​​pinyinAnalyzer​​ 的定义:
<fieldType name="text_pinyin" class="solr.TextField"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="com.github.lzj960515.pinyin4solr.PinyinFilterFactory" keepFirstPinyin="true" keepFullPinyin="true" keepNonePinyinWord="true" keepOriginalWord="true" keepSeparateFirstLetter="true" keepJointFirstLetter="true"/> </analyzer> </fieldType>
  • ​keepFirstPinyin​​:是否保留每个汉字的首拼音。
  • ​keepFullPinyin​​:是否保留每个汉字的全拼音。
  • ​keepNonePinyinWord​​:是否保留非拼音词。
  • ​keepOriginalWord​​:是否保留原始词。
  • ​keepSeparateFirstLetter​​:是否保留每个汉字的首字母(分开)。
  • ​keepJointFirstLetter​​:是否保留每个汉字的首字母(连在一起)。
  1. 应用新的字段类型
  • 在 ​​schema.xml​​ 中定义使用 ​​text_pinyin​​ 字段类型的字段,例如:
<field name="name" type="text_pinyin" indexed="true" stored="true"/>
重启 Solr

完成上述配置后,重启 Solr 以使配置生效:

$SOLR_HOME/bin/solr restart

通过以上步骤,你可以在 Solr 中成功配置和使用 ​​IKAnalyzer​​ 和 ​​pinyinAnalyzer​​,从而提高中文搜索的准确性和效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 0:04:54

当10年架构师拿起AI:不是写不动了,是写得太快了

引言 过去这一年&#xff0c;AI 编程工具如雨后春笋。作为技术人&#xff0c;我们或许都体验过 AI 编程工具补全代码的“爽感”。但当视角从“个人”拉升到“组织”&#xff0c;作为 CTO 或架构师的你&#xff0c;是否正面临着一种“数据的尴尬”&#xff1a; 开发者说好用&am…

作者头像 李华
网站建设 2026/5/10 2:02:45

音乐推荐系统 基于协同过滤的音乐推荐系统 基于用户画像的音乐推荐系统 使用基于协同过滤与用户画...

音乐推荐系统 基于协同过滤的音乐推荐系统 基于用户画像的音乐推荐系统 使用基于协同过滤与用户画像相结合的方法&#xff0c;为用户推荐音乐&#xff0c;同时实现注册、登陆、搜索音乐等多种功能 后台管理员可以实现增删改查等多种功能 使用的数据集为kaggle平台上的公开数据集…

作者头像 李华
网站建设 2026/5/9 1:21:13

数据分层架构的平衡艺术:在性能、成本与一致性之间寻找最优解

前言&#xff1a;架构的本质是权衡 在技术领域里&#xff0c;我们常常陷入一种幻觉&#xff1a;认为存在完美的解决方案。然而&#xff0c;从业十余年后&#xff0c;我深刻认识到&#xff0c;架构的本质不是寻找最优解&#xff0c;而是在相互冲突的约束中做出恰当的权衡。 数…

作者头像 李华
网站建设 2026/5/9 20:56:33

基于SpringBoot家教系统设计与实现

传统的信息管理方法通常需要较长的时间来处理数据&#xff0c;且容易出现较高的错误率&#xff0c;修改错误数据也较为繁琐。此外&#xff0c;数据检索过程费时费力。为了提高管理效率&#xff0c;可以在计算机上安装家教管理系统软件&#xff0c;充分发挥其高效的信息处理能力…

作者头像 李华
网站建设 2026/5/9 10:40:04

【AI模型隐私新威胁】:Open-AutoGLM中隐藏的7大攻击面详解

第一章&#xff1a;Open-AutoGLM隐私风险概述Open-AutoGLM 是一款基于开源大语言模型的自动化代码生成工具&#xff0c;其核心机制依赖于对用户输入上下文的深度理解与代码片段生成。尽管其在提升开发效率方面表现出色&#xff0c;但其架构设计和数据处理流程引入了若干潜在隐私…

作者头像 李华