Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息

在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从TokenStream流中获取.

分词器的核心类Analyzer,TokenStream,Tokenizer,TokenFilter.

Analyzer

Lucene中的分词器有StandardAnalyzer,StopAnalyzer,SimpleAnalyzer,WhitespaceAnalyzer.

TokenStream

分词器做好处理之后得到的一个流,这个流中存储了分词的各种信息.可以通过TokenStream有效的获取到分词单元

Tokenizer

主要负责接收字符流Reader,将Reader进行分词操作.有如下一些实现类

KeywordTokenizer,

standardTokenizer,

CharTokenizer

|—-WhitespaceTokenizer

|—-LetterTokenizer

|—-LowerCaseTokenizer

TokenFilter

将分好词的语汇单元进行各种各样的过滤.

查看分词器的分词信息

package com.icreate.analyzer.luence;import java.io.IOException;import java.io.StringReader;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.SimpleAnalyzer;import org.apache.lucene.analysis.StopAnalyzer;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.WhitespaceAnalyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;import org.apache.lucene.util.Version;/** * * AnalyzerUtil.java* * @version : 1.1 ** @author : 苏若年 <a href=”mailto:DennisIT@163.com”>发送邮件</a> ** @since : 1.0创建时间: 2013-4-14 上午11:05:45 ** TODO: * AnalyzerUtil {/**** Description:查看分词信息* @param str待分词的字符串* @param analyzer 分词器* displayToken(String str,Analyzer analyzer){try {//将一个字符串创建成Token流TokenStream stream = analyzer.tokenStream(“”, new StringReader(str));//保存相应词汇CharTermAttribute cta = stream.addAttribute(CharTermAttribute.class);while(stream.incrementToken()){System.out.print(“[” + cta + “]”);}System.out.println();} catch (IOException e) {e.printStackTrace();}} main(String[] args) {Analyzer aly1 = new StandardAnalyzer(Version.LUCENE_36);Analyzer aly2 = new StopAnalyzer(Version.LUCENE_36);Analyzer aly3 = new SimpleAnalyzer(Version.LUCENE_36);Analyzer aly4 = new WhitespaceAnalyzer(Version.LUCENE_36);String str = “hello kim,I am dennisit,我是 中国人,my email is dennisit@163.com, and my QQ is 1325103287”;AnalyzerUtil.displayToken(str, aly1);AnalyzerUtil.displayToken(str, aly2);AnalyzerUtil.displayToken(str, aly3);AnalyzerUtil.displayToken(str, aly4);}},香港虚拟主机,虚拟主机,香港空间即使是不成熟的尝试,也胜于胎死腹中的策略。

Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息

相关文章:

你感兴趣的文章:

标签云: