news 2026/4/23 12:45:07

【详解】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/4/23 11:21:46

固件空中升级(OTA)测试:物联网时代的关键质量闸门

在万物互联的今日&#xff0c;固件空中升级&#xff08;OTA&#xff09;已成为物联网设备实现功能迭代、修复漏洞、提升用户体验的核心手段。然而&#xff0c;一次失败的OTA升级&#xff0c;轻则导致设备功能异常&#xff0c;重则引发设备“变砖”、数据丢失甚至大规模安全事件…

作者头像 李华
网站建设 2026/4/22 7:00:22

大部分企业都选错?玄微子揭秘AI智能体开发公司的真实选择标准

在人工智能技术迅猛发展的当下&#xff0c;AI智能体已成为企业实现数字化转型、提升运营效率的核心工具之一。面对市场上众多的开发服务商&#xff0c;如何选择一家真正靠谱、能持续提供价值的AI智能体开发公司&#xff0c;成为许多企业决策者关注的重点。本文将从行业现状、选…

作者头像 李华
网站建设 2026/4/23 10:36:48

当背调软件成为组织的人才风控中枢

从“效率工具”到“决策伙伴”的演进传统的背调流程&#xff0c;高度依赖HR的经验与精力&#xff0c;面临着效率瓶颈与标准不一的双重挑战。背调软件的出现&#xff0c;首要解决的正是这一痛点。通过自动化对接权威数据源、标准化核查流程&#xff0c;它能将原本数天甚至数周的…

作者头像 李华
网站建设 2026/4/23 11:33:51

Java AI 工具链:开发者效率提升 10 倍的核心技巧

在AI技术席卷各行各业的今天&#xff0c;Java开发者早已告别“纯手动编码”的低效时代。一套成熟的Java AI工具链&#xff0c;能将开发者从重复编码、繁琐调试、低效测试等机械工作中解放出来&#xff0c;聚焦核心业务逻辑设计。本文将从“编码-调试-测试-部署”全开发流程&…

作者头像 李华
网站建设 2026/4/23 11:34:34

论粘度计在现代工业与科研中的核心价值及应用体系研究

摘要本文旨在系统阐述粘度计作为关键物性分析仪器的技术原理、核心优势及多元应用场景。通过剖析旋转式粘度计的工作机制&#xff0c;结合具体技术参数与行业实践&#xff0c;深入探讨其在质量控制、工艺优化及产品研发中的不可替代性。研究显示&#xff0c;合理选择与运用粘度…

作者头像 李华