Lucene分詞器之庖丁解牛
阿新 • • 發佈:2019-01-07
注意:這裡配置環境變數要重新啟動系統後生效
我現在測試用的Lucene版本是lucene-2.4.0,它已經能夠支援中文分詞,但它是採用一元分詞(逐字拆分)的方法,即把每一個漢字當作是一個詞,這樣會使建立的索引非常龐大,會影響查詢效率.所以大多運用lucene的朋友,都會考慮使用其它的中文分詞包,這裡我就介紹最為常用的"庖丁解牛"分詞包,當然它也是一個值得推薦的中文分詞包.
本文主要講解Lucene如何整合"庖丁解牛"分詞包,在整合前,還是先通過一個例項演示一下Lucene自帶的中文分詞器的分詞效果.
package gzu.lyq.luceneAnalyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
//測試Lucene自帶的中文分詞器
public class LuceneAnalyzer {
public static void main(String[] args) throws Exception {
//StandardAnalyzer: 一元分詞
Analyzer analyzer = new StandardAnalyzer();
String indexStr = "我的QQ號碼是58472399";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分詞結果: 我 的 qq 號 碼 是 234456
通過上面的例子就會發現,Lucene自帶分詞器是將中文逐字拆分的,這是最為原始的分詞方法,現在大都不採用.
下面進入主題,來講解Lucene和"庖丁解牛"中文分詞包的整合.
"庖丁解牛"的下載地址是[url]http://code.google.com/p/paoding/downloads/list[/url],下載好後解壓,我解壓在E:\paoding2_0_4,進入該目錄,首先將paoding-analysis.jar拷貝到專案的WEB-INF/lib目錄;接著需要設定環境變數PAODING_DIC_HOME,變數名:PAODING_DIC_HOME 變數值:E:\paoding2_0_4\dic 第三步將E:\paoding2_0_4\src目錄下的paoding-dic-home.properties屬性檔案拷貝到專案的src目錄下,新增一行paoding.dic.home=E:/paoding2_0_4/dic 好了,到這裡,已經完成了Lucene和"庖丁解牛"的整合,下面寫個例子來測試一下.
package gzu.lyq.luceneAnalyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
//測試"庖丁解牛"中文分詞器的分詞效果
public class PaodingAnalyzer {
public static void main(String[] args) throws Exception {
Analyzer analyzer = new PaodingAnalyzer();
String indexStr = "我的QQ號碼是3453245";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分詞結果:我的 qq 號碼 3453245
如果把indexStr換成是"中華人民共和國萬歲" ,那麼分詞結果為:
中華 華人 人民 共和 共和國 萬歲 注意:用庖丁分詞器的時候,首先加入的包路徑中不能有中文,似乎中文不認,要加入common-logging.jar包,要不然會提示找不到類。
本文主要講解Lucene如何整合"庖丁解牛"分詞包,在整合前,還是先通過一個例項演示一下Lucene自帶的中文分詞器的分詞效果.
package gzu.lyq.luceneAnalyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
//測試Lucene自帶的中文分詞器
public class LuceneAnalyzer {
public static void main(String[] args) throws Exception {
//StandardAnalyzer: 一元分詞
Analyzer analyzer = new StandardAnalyzer();
String indexStr = "我的QQ號碼是58472399";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分詞結果:
通過上面的例子就會發現,Lucene自帶分詞器是將中文逐字拆分的,這是最為原始的分詞方法,現在大都不採用.
下面進入主題,來講解Lucene和"庖丁解牛"中文分詞包的整合.
"庖丁解牛"的下載地址是[url]http://code.google.com/p/paoding/downloads/list[/url],下載好後解壓,我解壓在E:\paoding2_0_4,進入該目錄,首先將paoding-analysis.jar拷貝到專案的WEB-INF/lib目錄;接著需要設定環境變數PAODING_DIC_HOME,變數名:PAODING_DIC_HOME 變數值:E:\paoding2_0_4\dic 第三步將E:\paoding2_0_4\src目錄下的paoding-dic-home.properties屬性檔案拷貝到專案的src目錄下,新增一行paoding.dic.home=E:/paoding2_0_4/dic
package gzu.lyq.luceneAnalyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
//測試"庖丁解牛"中文分詞器的分詞效果
public class PaodingAnalyzer {
public static void main(String[] args) throws Exception {
Analyzer analyzer = new PaodingAnalyzer();
String indexStr = "我的QQ號碼是3453245";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分詞結果:我的 qq 號碼 3453245
如果把indexStr換成是"中華人民共和國萬歲" ,那麼分詞結果為:
中華 華人 人民 共和 共和國 萬歲 注意:用庖丁分詞器的時候,首先加入的包路徑中不能有中文,似乎中文不認,要加入common-logging.jar包,要不然會提示找不到類。