lucene3 分词器的使用

 转载网址:http://extjs2.iteye.com/blog/818512

lucene3 中分词的一个例子

Java代码  
  1. import java.io.IOException;   
  2. import java.io.StringReader;   
  3.   
  4. import org.apache.lucene.analysis.Analyzer;   
  5. import org.apache.lucene.analysis.TokenStream;   
  6. import org.apache.lucene.analysis.standard.StandardAnalyzer;   
  7. import org.apache.lucene.analysis.tokenattributes.TermAttribute;   
  8. import org.apache.lucene.util.Version;   
  9.   
  10. public class AnalyzerTest {   
  11.   
  12.     public static void main(String[] args) throws IOException {   
  13.         String content  = "Dan O'Sullivan - Wikipedia: A New Community of Practice?http://www.1ju.org/";   
  14.         StringReader reader = new StringReader(content);   
  15.         Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_20);   
  16.         TokenStream ts = analyzer.tokenStream("", reader);   
  17.         ts.addAttribute(TermAttribute.class);   
  18.            
  19.        
  20.         while (ts.incrementToken()) {   
  21.             TermAttribute ta = ts.getAttribute(TermAttribute.class);   
  22.             System.out.println(ta.term());   
  23.         }   
  24.     }   
  25. }  
import java.io.IOException;
import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;
import org.apache.lucene.util.Version;

public class AnalyzerTest {

	public static void main(String[] args) throws IOException {
		String content  = "Dan O'Sullivan - Wikipedia: A New Community of Practice?http://www.1ju.org/";
		StringReader reader = new StringReader(content);
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_20);
		TokenStream ts = analyzer.tokenStream("", reader);
		ts.addAttribute(TermAttribute.class);
		
	
		while (ts.incrementToken()) {
			TermAttribute ta = ts.getAttribute(TermAttribute.class);
			System.out.println(ta.term());
		}
	}
}
 

 

 

结果代码  
  1. dan   
  2. o'sullivan   
  3. wikipedia   
  4. new   
  5. community   
  6. practice   
  7. http   
  8. www.1ju.org  

 

 

 

lucene3提供了下面几种分词器:

1、StopAnalyzer

StopAnalyzer 能过滤词汇中的特定字符串和词汇,并且完成大写转小写的功能。

2、StandardAnalyzer

StandardAnalyzer 根据空格和符号来完成分词,还可以完成数字、字母、E-mail 地址、IP 地址以及中文字符的分析处理,还可以支持过滤词表,用来代替StopAnalyzer 能够实现的过滤功能。

3、SimpleAnalyzer

SimpleAnalyzer 具备基本西文字符词汇分析的分词器,处理词汇单元时,以非字母字符作为分割符号。分词器不能做词汇的过滤,之进行词汇的分析和分割。输出地词汇单元完成小写字符转换,去掉标点符号等分割符。

在全文检索系统开发中,通常用来支持西文符号的处理,不支持中文。由于不完成单词过滤功能,所以不需要过滤词库支持。词汇分割策略上简单,使用非英文字符作为分割符,不需要分词词库的支持。

4、WhitespaceAnalyzer

WhitespaceAnalyzer 使用空格作为间隔符的词汇分割分词器。处理词汇单元的时候,以空格字符作为分割符号。分词器不做词汇过滤,也不进行小写字符转换。

实际中可以用来支持特定环境下的西文符号的处理。由于不完成单词过滤和小写字符转换功能,也不需要过滤词库支持。词汇分割策略上简单使用非英文字符作为分割符,不需要分词词库支持。

5、KeywordAnalyzer

KeywordAnalyzer 把整个输入作为一个单独词汇单元,方便特殊类型的文本进行索引和检索。针对邮政编码,地址等文本信息使用关键词分词器进行索引项建立非常方便。

6、CJKAnalyzer

CJKAnalyzer 内部调用CJKTokenizer 分词器,对中文进行分词,同时使用StopFilter 过滤器完成过滤功能,可以实现中文的多元切分和停用词过滤。在Lucene3.0 版本中已经弃用。

7、ChineseAnalyzer

ChineseAnalyzer 功能与StandardAnalyzer 分析器在处理中文是基本一致,都是切分成单个的双字节中文字符。在Lucene3.0 版本中已经弃用。

8、PerFieldAnalyzerWrapper

PerFieldAnalyzerWrapper 功能主要用在针对不同的Field 采用不同的Analyzer 的场合。比如对于文件名,需要使用KeywordAnalyzer ,而对于文件内容只使用StandardAnalyzer 就可以了。通过addAnalyzer() 可以添加分类器。

9、IKAnalyzer

实现了以词典为基础的正反向全切分,以及正反向最大匹配切分两种方法。IKAnalyzer 是第三方实现的分词器,继承自LuceneAnalyzer 类,针对中文文本进行处理。

10、JE-Analysis

JE-AnalysisLucene 的中文分词组件,需要下载。

11、ICTCLAS4J

ictclas4j 中文分词系统是sinboy 在中科院张华平和刘群老师的研制的FreeICTCLAS 的基础上完成的一个java 开源分词项目,简化了原分词程序的复杂度,旨在为广大的中文分词爱好者一个更好的学习机会。

12、Imdict-Chinese-Analyzer

imdict-chinese-analyzerimdict 智能词典 的智能中文分词模块,算法基于隐马尔科夫模型(Hidden Markov Model, HMM) ,是中国科学院计算技术研究所的ictclas 中文分词程序的重新实现(基于Java ),可以直接为lucene 搜索引擎提供简体中文分词支持。

13、Paoding Analysis

Paoding Analysis 中文分词具有极 高效率 和 高扩展性。引入隐喻,采用完全的面向对象设计,构思先进。其效率比较高,在PIII 1G 内存个人机器上,1 秒可准确分词100 万汉字。采用基于不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。能够对未知的词汇进行合理解析。

14、MMSeg4J

mmseg4jChih-Hao TsaiMMSeg 算法(http://technology.chtsai.org/mmseg/ ) 实现的中文分词器,并实现luceneanalyzer solrTokenizerFactory 以方便在LuceneSolr 中使用。MMSeg 算法有两种分词方法:SimpleComplex ,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了98.41%mmseg4j 已经实现了这两种分词算法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值