news 2026/8/16 10:51:09

【详解】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/8/16 1:15:21

高并发场景下的“超卖”问题测试方案

理解“超卖”的本质与测试价值‌ “超卖”&#xff0c;简而言之&#xff0c;就是在库存数量有限的情况下&#xff0c;由于系统处理逻辑或数据一致性问题&#xff0c;成功卖出的商品数量超过了实际物理库存。在高并发场景下&#xff0c;多个用户在同一毫秒内对同一商品发起购买…

作者头像 李华
网站建设 2026/8/6 23:34:05

langchain agent按需使用Skill

一.背景 LangChain Agent 按需使用 Skill(技能),是指智能代理根据任务场景的具体需求,动态选择、调用并组合所需的技能模块(如数据查询、逻辑推理、工具调用、自然语言生成等),而非一次性加载所有技能。这一模式的诞生,根植于大语言模型应用从 “通用能力展示” 走向 “…

作者头像 李华
网站建设 2026/8/16 7:53:08

git操作遇到的问题

git命令,推代码&#xff0c;首次 git init--------------》初始化 git add .---------------》添加到本地仓库 git commit -m ""----------》提交描述信息 git remote add origin https://github.com/用户名/carFix.git-----------》根据url建立本地连接 git branch …

作者头像 李华
网站建设 2026/8/16 7:52:30

Open-AutoGLM插件安装失败?一文搞定7类常见错误与解决方案

第一章&#xff1a;Open-AutoGLM需要安装插件在部署 Open-AutoGLM 框架时&#xff0c;必须预先安装特定插件以启用其自动化推理与模型调用能力。这些插件不仅扩展了核心功能&#xff0c;还确保与主流大语言模型&#xff08;LLM&#xff09;接口的兼容性。依赖插件清单 auto-glm…

作者头像 李华
网站建设 2026/8/16 7:53:06

【计算机毕业设计案例】基于SpringBoot的网球馆管理系统的设计与实现网球俱乐部管理系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华