Lucene的中文分詞器


什么是中文分詞器 

  學過英文的都知道,英文是以單詞為單位的,單詞與單詞之間以空格或者逗號句號隔開

 

  而中文的語義比較特殊,很難像英文那樣,一個漢字一個漢字來划分。

 

  所以需要一個能自動識別中文語義的分詞器。

2. Lucene自帶的中文分詞器 

  StandardAnalyzer  

    單字分詞:就是按照中文一個字一個字地進行分詞。如:“我愛中國”
    效果:愛”

 

  CJKAnalyzer  

    二分法分詞:按兩個字進行切分。如:中國人,效果:是”中國“國人”

 

    上邊兩個分詞器無法滿足對中文的需求。

3. 使用中文分詞器IKAnalyzer

  IKAnalyzer繼承LuceneAnalyzer抽象類,使用IKAnalyzerLucene自帶的分析器方法一樣,將Analyzer測試代碼改為IKAnalyzer測試中文分詞效果。

 

  如果使用中文分詞器ik-analyzer,就在索引和搜索程序中使用一致的分詞器ik-analyzer。

  

1. 使用luke測試IK中文分詞 

  (1)打開Luke,不要指定Lucene目錄。否則看不到效果

 

  (2)在分詞器欄,手動輸入IkAnalyzer的全路徑org.wltea.analyzer.lucene.IKAnalyzer

 

  

2. 改造代碼,使用IkAnalyzer做分詞器 

  添加jar

  

 

  修改分詞器代碼

// 創建中文分詞器

Analyzer analyzer = new IKAnalyzer();

  擴展中文詞庫

    拓展詞庫的作用:在分詞的過程中,保留定義的這些詞

    ①src或其他source目錄下建立自己的拓展詞庫,mydict.dic文件,里面寫入自定義的詞

    ②src或其他source目錄下建立自己的停用詞庫ext_stopword.dic文件停用詞的作用:在分詞的過程中,分詞器會忽略這些詞。

    ③src或其他source目錄下建立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">mydict.dic</entry> 

     <!-- 用戶可以在這里配置自己的擴展停用詞字典    -->

    <entry key="ext_stopwords">ext_stopword.dic</entry>

</properties>

 

  如果想配置擴展詞和停用詞,就創建擴展詞的文件和停用詞的文件,文件的編碼要是utf-8

  注意不要用記事本保存擴展詞文件和停用詞文件那樣的話格式中是含有bom

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM