参考以下连接地址: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();
}
}
分享到:
相关推荐
3. **Lucene 5.x、6.x、7.x的关键特性**: - Lucene 5.x引入了新的DocValues格式,提高了索引的压缩率和查询速度。同时,支持更强大的多字段搜索和聚合功能。 - Lucene 6.x进一步优化了内存使用,增强了查询性能,...
3. **查询**: 创建一个IndexSearcher对象,构造Query对象(如使用QueryParser解析用户输入的查询字符串),然后执行搜索,获取TopDocs或ScoreDoc对象。 4. **结果处理**: 遍历搜索结果,通过Document对象获取每个...
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
《深入解析Lucene.Net.dll:2.9.2版本的核心技术》 在信息化时代,搜索引擎已经成为数据检索不可或缺的工具,而Lucene.Net.dll正是.NET平台上的一款强大、高效的全文搜索引擎库。作为Apache Lucene项目的一部分,...
《Lucene 5.x与3.6.0版本差异详解》 Lucene作为一个强大的全文搜索引擎库,其每个版本的更新都带来了一系列的变化和优化。本文将深入探讨Lucene 5.x与Lucene 3.6.0之间的主要差异,帮助开发者理解新版本的功能改进...
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 + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
在您提供的资源中,"je-analysis-1.5.1.jar"、"lucene-core-3.5.0.jar" 和 "IKAnalyzer2012.zip" 是三个关键组件,它们在文本分词过程中扮演着重要角色。 首先,"je-analysis-1.5.1.jar" 是一个Java库,很可能是一...
第9章 搜索索引(Lucene+Web Spider) 第10章 在线网上支付(JSP+Swrvlet+JavaBean) 第11章 JavaWeb邮件发送系统(JSP+Servlet+JavaBean) 第12章 网络留言板(JSP+Servlet+JavaBean) 第13章 网络留言板续——...
基于Lucene4.x实现Paoding分词器.rar
来自牛人修改的IKAnalyzer,https://github.com/sea-boat/IKAnalyzer-Mirror,亲测Lucene7.2可用
第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章 网络留言板续——...
【课程大纲】01.Lucene4入门精通实战课程-概述 共23页...共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene...
适合Lucene5.x的IKAnalyzer-5.0分词器的jar包,重写了前面版本的IKAnalyzer,我已经试过,可以使用。