溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CDH如何添加solr中文分詞

發布時間:2021-12-17 09:18:52 來源:億速云 閱讀:411 作者:小新 欄目:云計算
# 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

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女