news 2026/5/31 0:40:40

【详解】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/30 1:12:22

慎选敏捷开发协作工具!忽视私有化,企业数据随时归零

一、敏捷开发是什么&#xff1f; 敏捷开发是一种以人为核心、遵循迭代式与循序渐进原则的软件开发方法论&#xff0c;核心目标是通过快速响应需求变化、紧密协作交付可用产品&#xff0c;适配当前易变、不确定的商业环境。敏捷开发的四大核心价值观&#xff1a;个体和互动重于…

作者头像 李华
网站建设 2026/5/30 1:12:20

AI助教系统:你的24小时智能学习伙伴

在今天的课堂和在线学习平台中&#xff0c;一个新“老师”正悄然登场——它不睡觉、不休息&#xff0c;还能随时回答你的问题&#xff0c;这就是AI助教系统。听起来很酷&#xff1f;其实它的背后&#xff0c;是一整套人工智能技术的巧妙整合。 那么&#xff0c;AI助教到底是什么…

作者头像 李华
网站建设 2026/5/30 6:57:55

一款轻量级 WinForm 开源控件库,让老界面秒变高颜值

前言 用户界面的美观与易用性始终是开发关注的焦点。随着技术的不断进步&#xff0c;传统的WinForm控件虽然稳定可靠&#xff0c;但在视觉效果上往往难以满足现代用户对美学的追求。 本文将介绍一个基于 WinForm 的自绘控件项目&#xff0c;摆脱原生 WinForm 控件的方方正正的按…

作者头像 李华
网站建设 2026/5/30 1:12:16

单北斗变形监测系统的安装与应用分析

本文将深入探讨“单北斗变形监测系统的安装与应用分析”。文章首先介绍单北斗GNSS的基本原理和系统构成&#xff0c;包括关键组件&#xff0c;如GNSS接收机和传感器。接着&#xff0c;详细阐述安装过程中的重要步骤&#xff0c;确保系统在不同环境中的可靠性。随后&#xff0c;…

作者头像 李华