lucene通过tokenstream显示分词信息「建议收藏」

lucene通过tokenstream显示分词信息「建议收藏」publicclassAnalyzerUtil{ publicstaticvoidmain(String[]args){ StandardAnalyzersa=newStandardAnalyzer(Version.LUCENE_45); Stringstr=”Iamcomefromjiangxifengchengtongtian.thisi

大家好,又见面了,我是你们的朋友全栈君。

public class AnalyzerUtil {
	public static void main(String[] args) {
		StandardAnalyzer sa=new StandardAnalyzer(Version.LUCENE_45);
		String str="I am come from jiangxi fengcheng tongtian . this is a dog";
		TokenStream ts=null;
		try {
			ts=sa.tokenStream("content", new StringReader(str));
			CharTermAttribute cta=ts.addAttribute(CharTermAttribute.class);
			ts.reset(); 
			while(ts.incrementToken())
			{
				//CharTermAttribute cta=ts.getAttribute(CharTermAttribute.class);
				System.out.println(cta);
			}
			ts.end();
			/*while(ts.incrementToken()){
				System.out.println(cta);
			}*/
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(ts!=null)
				try {
					ts.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}
}

输出:

i
am
come
from
beijing
dog

 

reset():This method is called by a consumer before it begins consumption using incrementToken(). 

 

如果没有加上ts.reset();会报空指针异常。如:

Exception in thread "main" java.lang.NullPointerException
	at org.apache.lucene.analysis.standard.StandardTokenizerImpl.zzRefill(StandardTokenizerImpl.java:921)
	at org.apache.lucene.analysis.standard.StandardTokenizerImpl.getNextToken(StandardTokenizerImpl.java:1128)
	at org.apache.lucene.analysis.standard.StandardTokenizer.incrementToken(StandardTokenizer.java:173)
	at org.apache.lucene.analysis.standard.StandardFilter.incrementToken(StandardFilter.java:49)
	at org.apache.lucene.analysis.core.LowerCaseFilter.incrementToken(LowerCaseFilter.java:54)
	at org.apache.lucene.analysis.util.FilteringTokenFilter.incrementToken(FilteringTokenFilter.java:82)
	at com.lucene.analyzer.AnalyzerUtil.main(AnalyzerUtil.java:24)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163120.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2019年互联网寒冬,企业大裁员,我们太难了

    2019年互联网寒冬,企业大裁员,我们太难了2019年,我们真的是太难了,大家又没感觉到?“上午还在写代码修Bug,下午就被裁掉了……”随着寒冬的到来,各大互联网公司裁员的消息屡见不鲜。甚至连一些科技巨头都在人力优化和收紧,下面是今年大公司

    2022年8月5日
  • 定制Debian启动过程

    定制Debian启动过程

    2021年8月10日
  • 信赖铃音的PS2游戏目录2017.6

    信赖铃音的PS2游戏目录2017.6信赖铃音PS2无损镜像游戏光碟分类目录淘宝最全1600个游戏上架大家扫我加我微信可以直接在微店或者微信红包购买PS2游戏哦!微信号298337705或者直接扫我或者保存图片长按识别二维码就可以加我了!感谢大家支持信赖铃音的无损PS2游戏光碟选好可以直接给我名单拍件数或者直接用购物车选购店址:https://playstation2.taobao.com/PS2搜索信赖铃音PS…

    2022年10月24日
  • RX 和 TX_RX和OTC

    RX 和 TX_RX和OTC我们在ifconfig查看网卡配置时或者嵌入式开发的时候,经常会看到rx/tx缩写,其含义如下:RX==receive,接收,从开启到现在接收封包的情况,是下行流量。TX==Transmit,发

    2022年8月6日
  • 分布式、多线程、高并发都不懂,拿什么去跳槽

    分布式、多线程、高并发都不懂,拿什么去跳槽当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?确…

    2022年5月30日
  • Python开发命名规范

    Python开发命名规范引言软件开发中规范的命名能够使你的代码简洁美观,完美的命名规范是一个程序员最基本的技能。下面我先简单说说两种常用的命名方式:驼峰命名法混合使用大小写字母来构成变量和函数的名字,以大写字母代替语句间隔的命名方法。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。大驼峰命名:首字母大写。如CamelCase、JavaScript,HelloWorl…

    2022年6月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号