lucene 4.3 通过TokenStream显示分词代码演示
核心代码:
public class AnalyzerUtils {
/**
* 显示分词信息
* @param str
* @param a
* @Adder by arvin 2013-7-2 下午5:02:24
*/
public static void displayToken(String str,Analyzer a) {
try {
TokenStream stream = a.tokenStream("content",new StringReader(str));
//创建一个属性,这个属性会添加流中,随着这个TokenStream增加
CharTermAttribute cta = stream.addAttribute(CharTermAttribute.class);
stream.reset();//不添加会显示空指针错误
while(stream.incrementToken()) {
System.out.print("["+cta+"]");
}
System.out.println();
stream.end();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 显示分词的所有信息
* @param str
* @param a
* @Adder by arvin 2013-7-2 下午5:02:52
*/
public static void displayAllTokenInfo(String str,Analyzer a){
try {
TokenStream stream = a.tokenStream("content",new StringReader(str));
//位置增量的属性,存储语汇单元之间的距离
PositionIncrementAttribute pis=stream.addAttribute(PositionIncrementAttribute.class);
//每个语汇单元的位置偏移量
OffsetAttribute oa=stream.addAttribute(OffsetAttribute.class);
//存储每一个语汇单元的信息(分词单元信息)
CharTermAttribute cta=stream.addAttribute(CharTermAttribute.class);
//使用的分词器的类型信息
TypeAttribute ta=stream.addAttribute(TypeAttribute.class);
stream.reset();
while(stream.incrementToken()) {
System.out.print("增量:"+pis.getPositionIncrement()+":");
System.out.print("分词:"+cta+"位置:["+oa.startOffset()+"~"+oa.endOffset()+"]->类型:"+ta.type()+"\n");
}
System.out.println();
stream.end();
} catch (IOException e) {
e.printStackTrace();
}
}}
测试代码:
@Test
public void testAnalyzer(){
Analyzer a1=new StandardAnalyzer(Version.LUCENE_43);
Analyzer a2=new StopAnalyzer(Version.LUCENE_43);
Analyzer a3=new SimpleAnalyzer(Version.LUCENE_43);
Analyzer a4=new WhitespaceAnalyzer(Version.LUCENE_43);
String str="this is my house,I am come from yunnang zhaotong,my email is 342345324@qq.com";
//String str="我的家乡在福建省龙岩市";
AnalyzerUtils.displayToken(str, a1);
AnalyzerUtils.displayToken(str, a2);
AnalyzerUtils.displayToken(str, a3);
AnalyzerUtils.displayToken(str, a4);
}@Test
public void testAnalyzer02(){
Analyzer a1=new StandardAnalyzer(Version.LUCENE_43);
Analyzer a2=new StopAnalyzer(Version.LUCENE_43);
Analyzer a3=new SimpleAnalyzer(Version.LUCENE_43);
Analyzer a4=new WhitespaceAnalyzer(Version.LUCENE_43);
String str="how are you thank you";
AnalyzerUtils.displayAllTokenInfo(str, a1);
AnalyzerUtils.displayAllTokenInfo(str, a2);
AnalyzerUtils.displayAllTokenInfo(str, a3);
AnalyzerUtils.displayAllTokenInfo(str, a4);
}
控制台结果显示:
英文结果:
testAnalyzer()结果:
[my][house][i][am][come][from][yunnang][zhaotong][my][email][342345324][qq.com]
[my][house][i][am][come][from][yunnang][zhaotong][my][email][qq][com]
[this][is][my][house][i][am][come][from][yunnang][zhaotong][my][email][is][qq][com]
[this][is][my][house,I][am][come][from][yunnang][zhaotong,my][email][is][342345324@qq.com]testAnalyzer()结果
增量:1:分词:how位置:[0~3]->类型:<ALPHANUM>
增量:2:分词:you位置:[8~11]->类型:<ALPHANUM>
增量:1:分词:thank位置:[12~17]->类型:<ALPHANUM>
增量:1:分词:you位置:[18~21]->类型:<ALPHANUM>增量:1:分词:how位置:[0~3]->类型:word
增量:2:分词:you位置:[8~11]->类型:word
增量:1:分词:thank位置:[12~17]->类型:word
增量:1:分词:you位置:[18~21]->类型:word增量:1:分词:how位置:[0~3]->类型:word
增量:1:分词:are位置:[4~7]->类型:word
增量:1:分词:you位置:[8~11]->类型:word
增量:1:分词:thank位置:[12~17]->类型:word
增量:1:分词:you位置:[18~21]->类型:word增量:1:分词:how位置:[0~3]->类型:word
增量:1:分词:are位置:[4~7]->类型:word
增量:1:分词:you位置:[8~11]->类型:word
增量:1:分词:thank位置:[12~17]->类型:word
增量:1:分词:you位置:[18~21]->类型:word中文结果:
testAnalyzer()结果:
[我][的][家][乡][在][福][建][省][龙][岩][市]
[我的家乡在福建省龙岩市]
[我的家乡在福建省龙岩市]
[我的家乡在福建省龙岩市]testAnalyzer02()结果:
增量:1:分词:明位置:[0~1]->类型:<IDEOGRAPHIC>
增量:1:分词:天位置:[1~2]->类型:<IDEOGRAPHIC>
增量:1:分词:是位置:[2~3]->类型:<IDEOGRAPHIC>
增量:1:分词:我位置:[3~4]->类型:<IDEOGRAPHIC>
增量:1:分词:的位置:[4~5]->类型:<IDEOGRAPHIC>
增量:1:分词:生位置:[5~6]->类型:<IDEOGRAPHIC>
增量:1:分词:日位置:[6~7]->类型:<IDEOGRAPHIC>增量:1:分词:明天是我的生日位置:[0~7]->类型:word
增量:1:分词:明天是我的生日位置:[0~7]->类型:word
增量:1:分词:明天是我的生日位置:[0~7]->类型:word
lucene 4.3 通过TokenStream显示分词代码演示相关推荐
- Lucene笔记16-Lucene的分词-通过TokenStream显示分词的详细信息
一.通过TokenStream查看分词的详细信息 package com.wsy;import org.apache.lucene.analysis.*; import org.apache.luce ...
- 13、学习Lucene3.5索引之通过TokenStream显示分词
1.显示分词词汇 public static void displayToken(String str, Analyzer analyzer){try {/** * TokenStream token ...
- Lucene笔记15-Lucene的分词-通过TokenStream显示分词
一.展示分词内容 package com.wsy;import org.apache.lucene.analysis.*; import org.apache.lucene.analysis.stan ...
- Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息
Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...
- ik分词和jieba分词哪个好_Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考...
前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...
- Lucene.net(4.8.0)+PanGu分词器 问题记录一 分词器Analyzer的构造和内部成员ReuseStategy
前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...
- FFmpeg在Windows上通过dshow编解码方式设置为mjpeg并实时显示测试代码
Windows上默认的内置摄像头一般支持两种编解码格式:rawvideo和mjpeg.在调用FFmpeg接口时默认的采用rawvideo.这里通过DirectShow实现为mjpeg进行编解码. 通过 ...
- 编程算法 - 字典分词 代码(C)
字典分词 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 给定字典, 给定一句话, 进行分词. 使用深度遍历(DFS)的方法. 使用一个參数string ...
- Eclipse分栏显示同一个代码文件的设置
场景:分栏同时显示同一个代码文件的内容的功能. 版本:Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) 设 ...
最新文章
- python怎么读取txt文件内容然后保存到excel-Python实现读取txt文件并转换为excel的方法示例...
- 均分纸牌(经典贪心)
- python多线程编程(4): 死锁和可重入锁
- 字符串php手册,php知识点复习之字符串
- OpenCV之分离和合并颜色通道
- python函数式编程-装饰器
- mysql数据库安装时的默认端口_数据库默认端口号
- Mac OS X 背后的故事(三)Mach之父Avie Tevanian
- [2022软工第三次作业]结对编程项目——最长英语单词链
- 【JZOJ】【卡特兰数】【高精】WZK打雪仗
- 通过示波器主板讲解示波器原理
- 踩过一个FM24C64与FM24CL64的坑
- 接口与实现基础 DAY ONE
- VBA清除除第一行之外所有表格的数据
- 成都哪个java培训机构好?
- 2021.03青少年软件编程(Python)等级考试试卷(二级)
- 树莓派产生PWM控制伺服电机和步进电机踩坑
- 在DOS中格式化C盘,及在DOS下硬盘安装windows2003系统
- 蚂蚁金服面试总结(一面没过)
- CSS3常用动画效果合集(最全)