温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CDH如何添加solr中文分词

发布时间:2021-12-17 09:18:52 来源:亿速云 阅读:410 作者:小新 栏目:云计算
# CDH如何添加Solr中文分词 ## 前言 在Cloudera Distribution for Hadoop (CDH) 中使用Solr进行全文检索时,针对中文内容的处理需要专门的分词器支持。本文将详细介绍如何在CDH环境中为Solr配置中文分词器,包括IK Analyzer和SmartCN等常用方案的集成方法。 --- ## 一、环境准备 ### 1.1 确认CDH版本 ```bash # 查看CDH版本 cat /etc/default/cloudera-scm-server | grep CM_VERSION 

1.2 确认Solr服务状态

# 检查Solr服务 sudo service solr-server status 

1.3 所需组件下载

  • IK Analyzer JAR包:最新版下载
  • SmartCN插件包(CDH通常自带)

二、IK Analyzer集成方案

2.1 上传JAR文件

将以下文件上传到Solr节点: - ik-analyzer-*.jar - stopword.dic (可选停用词库) - IKAnalyzer.cfg.xml (配置文件)

推荐存放路径:

/opt/cloudera/parcels/CDH/lib/solr/contrib/analysis-extras/lucene-libs/ 

2.2 修改solrconfig.xml

<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex="ik-analyzer-.*\.jar" /> 

2.3 配置schema.xml

<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> 

2.4 重启服务

sudo service solr-server restart 

三、SmartCN官方方案

3.1 启用内置插件

<fieldType name="text_smartcn" class="solr.TextField"> <analyzer> <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/> <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/> </analyzer> </fieldType> 

3.2 性能对比测试

分词器 索引速度 查询速度 内存占用
IK 中等 较高
SmartCN 中等

四、自定义词典配置

4.1 IK自定义词典

编辑IKAnalyzer.cfg.xml

<entry key="ext_dict">custom/mydict.dic</entry> <entry key="ext_stopwords">custom/mystop.dic</entry> 

4.2 热更新配置

通过API触发更新:

curl http://solr-host:8983/solr/collection_name/analysis/field?wt=json -d ' { "fieldType":"text_ik", "fieldValue":"测试新词" }' 

五、验证分词效果

5.1 使用Solr Admin界面

  1. 访问http://<solr-host>:8983/solr
  2. 选择对应collection
  3. 进入Analysis页面输入测试文本

5.2 通过API验证

curl "http://localhost:8983/solr/collection/analysis/field?analysis.fieldvalue=中华人民共和国&analysis.fieldtype=text_ik&wt=json" 

预期输出应显示正确切分:

{ "tokens": [ {"token":"中华", "start":0, "end":2}, {"token":"人民", "start":2, "end":4}, {"token":"共和国", "start":4, "end":7} ] } 

六、性能优化建议

  1. JVM调参

    # 修改solr.in.sh SOLR_JAVA_MEM="-Xms4g -Xmx4g" 
  2. 缓存配置

    <filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0"/> 
  3. 索引优化

    curl http://localhost:8983/solr/collection/update -H "Content-Type: text/xml" --data-binary '<optimize/>' 

七、常见问题解决

7.1 类加载错误

java.lang.ClassNotFoundException: org.wltea.analyzer.lucene.IKTokenizerFactory 

解决方案: - 确认JAR路径正确 - 检查文件权限(需solr用户可读)

7.2 分词效果不佳

  • 检查词典编码必须为UTF-8无BOM格式
  • 确认词典文件每行一个词条

7.3 内存溢出

solrconfig.xml中增加:

<indexDefaults> <ramBufferSizeMB>100</ramBufferSizeMB> </indexDefaults> 

结语

通过本文介绍的两种方案,用户可以根据实际需求选择适合的中文分词器。对于需要高精度分词的场景推荐IK Analyzer,而追求部署简便性的场景可选择SmartCN。建议在生产环境部署前进行充分的性能测试和词典优化。

注意:所有配置修改后都需要重启Solr服务生效,建议在维护窗口期操作。 “`

(全文约1350字)

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI