2

我对 lucene 标记化过程有一个基本问题:

TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);    
TermAttribute termAttribute = tokenStream.addAttribute(TermAttribute.class);

termAttribute 是做什么用的? tokenStream.addAttribute(TermAttribute.class) 有什么作用?

谢谢!

4

1 回答 1

3

TermAttribute 包含令牌的文本。addAttribute(TermAttribute.class) 将返回 TermAttribute 的一个实例(如果还没有,则会创建)。

比如说,你也对某个token的位置增量信息感兴趣,那么你也会说:

PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class);

使用 TermAttribute 和 PositionIncrementAttribute 的实例,您现在可以通过以下方式访问/更改令牌文本和位置增量信息:

termAttribute.buffer()
posIncrAtt.getPositionIncrement()
posIncrAtt.setPositionIncrement()

有关详细信息,请参阅http://lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/analysis/package-summary.html

于 2012-07-20T05:45:09.570 回答