在使用lucene创建索引库中,介绍了一些基础的lucene概念,如何用lucene进行对一个句子分词呢。
private static void tokenStream() throws Exception{
//1.创建一个Analyzer对象,StandardAnalyzer对象
Analyzer analyzer = new IKAnalyzer();
//2.使用分析器对象的tokenStream方法获得一个TokenStream对象
TokenStream tokenStream = analyzer.tokenStream("","什么是lucence Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架");
//3.向tokenStream对象中设置一个引用,相当于数一个指针
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
//4.调用TokenStream对象的rest方法,如果不调用抛异常
tokenStream.reset();
//5.使用while循环遍历TokenStream对象
while (tokenStream.incrementToken()){
System.out.println(charTermAttribute.toString());
}
//6.关闭TokenStream对象
tokenStream.close();
}
这里如果是StandardAnalyzer,就是可以很好的对英文进行分词,但是标准分词器分析中文只会把中文一个字一个字的进行拆分,如果需要对中文进行分词的话,需要用IKAnalyzer,就可以很好的进行分词了。
同时呢,需要在src下面引入资源文件,一个是配置文件,用来配置热点词汇,也就是常用的分词词汇表,还有一个是禁用词汇,比如一些敏感词汇。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">hotword.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
上面这个是配置文件IKAnalyzer.cfg.xml。