[Lucene] Lucene 4.10 显示分词结果
主要参考: http://www.cnblogs.com/dennisit/p/3258664.html
原文写得非常好,非常详细。但是版本有一些老了,以其中的displayToken()中跟displayAllTokenInfo()已经需要修改。否则无法在最新的4.10上工作。
在最新的版本之中,需要:
(1)在stream的incrementToken之前增加一个reset的动作:
(2)(我使用JapaneseAnalyzer测试的结果) 这样显示的结果,会出现重复:
比如:
写道
原文:日本経済新聞でモバゲーの記事を読んだ
======日文=======StandardAnalyzer======分词=======
["日本","日本経済新聞","経済","新聞","モバゲ","記事","読む"]
======日文=======StandardAnalyzer======分词=======
["日本","日本経済新聞","経済","新聞","モバゲ","記事","読む"]
我对改方法进行了修改,通过offset进行判定是否略过。
修改之后的displayAllTokenInfo():
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(); int lastOffset = -1; while(stream.incrementToken()) { if(oa.startOffset() < lastOffset) continue; lastOffset = oa.endOffset(); // System.out.print("增量:"+pis.getPositionIncrement()+":"); // System.out.print("分词:"+cta+"位置:["+oa.startOffset()+"~"+oa.endOffset()+"]->类型:"+ta.type()+"\n"); System.out.print("["+cta+"]"); } System.out.println(); stream.end(); } catch (IOException e) { e.printStackTrace(); } }
相关推荐
编码之路 2020-01-01
qiuzhuoxian 2019-12-31
某某某 2016-08-02
spylyt 2020-09-11
天才幻想家 2020-08-03
AFei00 2020-08-03
sifeimeng 2020-08-01
vtnews 2020-07-29
kikaylee 2020-07-05
zooozx 2020-06-27
xiaocao0 2020-06-25
fkyyly 2020-05-31
谢育政 2020-05-03
zhongweinan 2020-04-24
bensonrachel 2020-04-20
lionelf 2020-04-20