PaodingAnalyzer使用方法:
PaodingAnalyzer使用方法:
下面进入主题,来讲解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号码是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 号码 58472399
如果把indexStr换成是"中华人民共和国万岁" ,那么分词结果为:
中华 华人 人民 共和 共和国 万岁
在lucene中的应用:
创建索引:
Analyzer analyzer = new PaodingAnalyzer();
Directory directory = FSDirectory.open(path);
IndexWriter writer = new IndexWriter(directory,analyzer,true,IndexWriter.MaxFieldLength.UNLIMITED);
搜索:
IndexSearcher searcher=new IndexSearcher(directory,true);
//创建标准分析器 可用于分词 用来对查询语句进行词法分析和语言处理
Analyzer analyzer = new PaodingAnalyzer();
//查询解析器
QueryParser parser=new QueryParser(Version.LUCENE_CURRENT, "body" ,analyzer );
//QueryParser 调用parser 进行语法分析,形成查询语法树,放到Query
Query query=parser.parse(queryString);