参考以下连接地址:http://stackoverflow.com/questions/2638200/how-to-get-a-token-from-a-lucene-tokenstream
package cn.itcast.lucene.analyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;
import org.apache.lucene.util.Version;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class AnalyzerTest {
String enText = "IndexWriter addDocument's a javadoc.txt";
// String zhText = "我们是中国人";
// String zhText = "小笑话_总统的房间 Room .txt";
String zhText = "一位绅士到旅游胜地的一家饭店要开个房间";
Analyzer en1 = new StandardAnalyzer(Version.LUCENE_36); // 单字分词
Analyzer en2 = new SimpleAnalyzer();
// Analyzer zh1 = new CJKAnalyzer(); // 二分法分词
Analyzer zh2 = new IKAnalyzer(); // 词库分词
@Test
public void test() throws Exception {
// analyze(en2, enText);
// analyze(en1, zhText);
// analyze(zh1, zhText);
analyze(zh2, zhText);
}
public void analyze(Analyzer analyzer, String text) throws Exception {
System.out.println("-------------> 分词器:" + analyzer.getClass());
TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text));
// 2.9及前的版本使用注释的代码,3.X后使用没有注释的代码
// for (Token token = new Token(); (token = tokenStream.next(token)) != null;) {
// System.out.println(token);
// }
// 3.X方法一
// while (tokenStream.incrementToken()) {
// System.out.println(tokenStream.getAttribute(CharTermAttribute.class).toString());
// }
// 3.X方法二
// OffsetAttribute offsetAttribute = tokenStream.getAttribute(OffsetAttribute.class);
// TermAttribute termAttribute = tokenStream.getAttribute(TermAttribute.class);
// while (tokenStream.incrementToken()) {
// int startOffset = offsetAttribute.startOffset();
// int endOffset = offsetAttribute.endOffset();
// String term = termAttribute.term();
// System.out.println("term:" + term + ",startOffset:" + startOffset + ",endOffset:" + endOffset);
// }
// 3.X方法三
OffsetAttribute offsetAttribute = tokenStream.getAttribute(OffsetAttribute.class);
CharTermAttribute termAttribute = tokenStream.getAttribute(CharTermAttribute.class);
while (tokenStream.incrementToken()) {
int startOffset = offsetAttribute.startOffset();
int endOffset = offsetAttribute.endOffset();
String term = termAttribute.toString();
System.out.println("term:" + term + ",startOffset:" + startOffset + ",endOffset:" + endOffset);
}
// 以下方法,上面几种情况都需要调用
tokenStream.end();
tokenStream.close();
}
}
分享到:
相关推荐
支持高版本Lucene,包括最新的Lucene7.3.1,本人亲自测试过,绝对能用!
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
C# Lucene.Net .Analysis.Cn.dll和Lucene.Net.dll两个文件
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
本下载在CSDN提供的代码中进行了修改,主要改动是将原来的代码中Lucene 2.x废弃的API接口全部修改成Lucene2.x的API接口。现在可以在lucene 2.x中使用
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
lucene5.X与lucene3.60的版本差异
Lucene.Net.dll 2.9.2
来自牛人修改的IKAnalyzer,https://github.com/sea-boat/IKAnalyzer-Mirror,亲测Lucene7.2可用
适合Lucene5.x的IKAnalyzer-5.0分词器的jar包,重写了前面版本的IKAnalyzer,我已经试过,可以使用。
第9章 搜索索引(Lucene+Web Spider) 第10章 在线网上支付(JSP+Swrvlet+JavaBean) 第11章 JavaWeb邮件发送系统(JSP+Servlet+JavaBean) 第12章 网络留言板(JSP+Servlet+JavaBean) 第13章 网络留言板续——...
基于Lucene4.x实现Paoding分词器.rar
第9章 搜索索引(Lucene+Web Spider) 第10章 在线网上支付(JSP+Swrvlet+JavaBean) 第11章 JavaWeb邮件发送系统(JSP+Servlet+JavaBean) 第12章 网络留言板(JSP+Servlet+JavaBean) 第13章 网络留言板续——...
第9章 搜索索引(Lucene+Web Spider) 第10章 在线网上支付(JSP+Swrvlet+JavaBean) 第11章 JavaWeb邮件发送系统(JSP+Servlet+JavaBean) 第12章 网络留言板(JSP+Servlet+JavaBean) 第13章 网络留言板续——...
lucene.net.dll(3.0.3.0)
Lucene.Net.dll 2.1 Lucene.Net,.net 的开源 全文搜索框架!