1. 程式人生 > >solr(二) : 整合ik-analyzer

solr(二) : 整合ik-analyzer

version 中文分詞器 bsp 修改 分詞器 case nag encoding ik分詞

一. 問題:

技術分享圖片

在使用solr時, 分詞器解析中文的時候, 是一個一個字解析的. 這並不是我們想要的結果.

而在lucene中, 使用的中文分詞器是 IKAnalyzer. 那麽在solr裏面, 是不是任然可以用這個呢.

二. 整合 ik

1. 修改schema配置文件

打開如下路徑中的managed-schema.xml文件.

技術分享圖片

在文檔的最後面, 加入

 <!--新建 使用 ik 分詞器 解析 的域類型, 分詞,過濾都在類裏面了-->  
  <fieldType name="text_ik_type" class="solr.TextField">   
      <
analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <!-- <fieldType name="text_ik_type" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> </analyzer> </fieldType>
-->
<!--支持ik分詞器的域--> <field name="title_ik" type="text_ik_type" indexed="true" stored="true" /> <field name="content_ik" type="text_ik_type" indexed="true" stored="true" multiValued="true"/> <field name="text_ik" type="text_ik_type" multiValued="true" indexed="true" stored
="true"/>

2. 加入jar包

在tomcat solr lib中加入ik分詞器的jar包

技術分享圖片

技術分享圖片

jar包可以在這裏下載: http://download.csdn.net/download/z____l/10176803

3. 加入分詞器配置文件

將前面lucene 裏面出現過的 配置文件拷貝到 classes 文件夾下. 不拷貝也行, 自己新建也可以.

技術分享圖片

由於這裏我並沒有使用文件夾裝ext,stopword, 所以 IKAnalyzer.cfg.xml文件要做部分修改.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 擴展配置</comment>
    <!--用戶可以在這裏配置自己的擴展字典 -->
    <entry key="ext_dict">ext.dic</entry>
    
    <!--用戶可以在這裏配置自己的擴展停止詞字典-->
    <entry key="ext_stopwords">stopword.dic</entry>
    
</properties>

三. 結果

技術分享圖片

solr(二) : 整合ik-analyzer