Lucene分词的注意事项

20 篇文章 0 订阅

版本问题


JE分词目前只用于Lucene的1.9-2.4版本,3.0版本的分词不可用,原因是NoSuchMethodError,也就是类没有相应的方法

IK Analyzer 2012下载地址:

https://code.google.com/p/ik-analyzer/

http://ik-analyzer.googlecode.com/files/IKAnalyzer2012_u5.zip

参考:

http://www.cnblogs.com/luxh/archive/2012/06/23/2559260.html


paoding的使用会用到,所以请下载此包

commons-logging.jar 

由于3.0的JAR包还没有编译下载,所以需要自己checkout后,编译使用

其他配置可参考:

http://zengzhaoshuai.iteye.com/blog/986314


CJK分词没有词库,分词方式较为简单:

http://blog.csdn.net/liugangr/article/details/12690123

需要下载.java文件


中科院分词:

下载地址

http://ictclas.org/down/50/ICTCLAS50_Windows_64_JNI.rar


分词原理的介绍:

  • 单字分词:就是按照中文一个字一个字地进行分词。如: " 我们是中国人 "
    效果: " " " " " " " " " " " " 。( StandardAnalyzer 就是这样)。
  • 二分法分词:按两个字进行切分。如: " 我们是中国人 " ,效果: " 我们 " " 们是 " " 是中 " " 中国 " " 国人 " 。( CJKAnalyzer 就是这样)。
  • 词库分词:按某种算法构造词,然后去匹配已建好的词库集合,如果匹配到就切分出来成为词语。通常词库分词被认为是最理想的中文分词算法。如: " 我们是中国人 " ,效果为: " 我们 " " 中国人 " 。(使用极易分词的 MMAnalyzer 。可以使用 " 极易分词 " ,或者是 " 庖丁分词 " 分词器、 IKAnalyzer )。

 参照:

http://www.cnblogs.com/ibook360/archive/2011/10/18/2216631.html



3.0的代码可以参照下面:

package Mylucene.com.IndexWriter;


import java.io.File;
import java.io.StringReader;


import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;


import jeasy.analysis.MMAnalyzer;


//主要测试3.0的分词,缺点是没有输出词频
public class AnalyzerTest {


private static String Dest_Index_path = "C:\\CC1"; 
public static void main(String[] args) {
// TODO Auto-generated method stub



try{
MaxFieldLength len = new MaxFieldLength(1024);
//Analyzer textAna = new MMAnalyzer();
//Analyzer textAna = new StandardAnalyzer(Version.LUCENE_30);
Analyzer textAna = new SimpleAnalyzer();
Directory d = FSDirectory.open(new File(Dest_Index_path));
IndexWriter writer = new IndexWriter(d, textAna, true, len);
Document doc = new Document();

String str = "中华人民共和国成立了,欢迎。来。北京 谢谢大家";
//String str = "welcome to beijing, my friend,";
Field field = new Field("Content", str, Field.Store.YES, Field.Index.ANALYZED);

doc.add(field);

TokenStream stream = textAna.tokenStream("Content", new StringReader(str));
System.out.println("begin");
while(stream.incrementToken())
{

TermAttribute ta = stream.getAttribute(TermAttribute.class);

System.out.println(ta.toString());
}

writer.optimize();
writer.close();
System.out.println("over");
}catch(Exception e)
{
e.printStackTrace();
}
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值