1 什么是中文分詞器
學過英文的都知道,英文是以單詞為單位的,單詞與單詞之間以空格或者逗號句號隔開。
而中文的語義比較特殊,很難像英文那樣,一個漢字一個漢字來划分。
所以需要一個能自動識別中文語義的分詞器。
2. Lucene自帶的中文分詞器
StandardAnalyzer
單字分詞:就是按照中文一個字一個字地進行分詞。如:“我愛中國”,
效果:“我”、“愛”、“中”、“國”。
CJKAnalyzer
二分法分詞:按兩個字進行切分。如:“我是中國人”,效果:“我是”、“是中”、“中國”“國人”。
上邊兩個分詞器無法滿足對中文的需求。
3. 使用中文分詞器IKAnalyzer
IKAnalyzer繼承Lucene的Analyzer抽象類,使用IKAnalyzer和Lucene自帶的分析器方法一樣,將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的。
