private Token nextToken(Token reusableToken) throws IOException {
assert reusableToken != null;
//先使用上次留下来的。
Token nextToken = tokenQueue.poll();
if(nextToken != null) {
return nextToken;
}
/*//在 TokenUtils.nextToken 已经调用了 inc
if(!input.incrementToken()) {
return null;
}*/
/*TermAttribute termAtt = (TermAttribute)input.getAttribute(TermAttribute.class);
OffsetAttribute offsetAtt = (OffsetAttribute)input.getAttribute(OffsetAttribute.class);
TypeAttribute typeAtt = (TypeAttribute)input.getAttribute(TypeAttribute.class);
nextToken = reusableToken.reinit(termAtt.termBuffer(), 0, termAtt.termLength(), offsetAtt.startOffset(), offsetAtt.endOffset(), typeAtt.type());*/
nextToken = TokenUtils.nextToken(input, reusableToken);
if(nextToken != null &&
(Word.TYPE_LETTER_OR_DIGIT.equalsIgnoreCase(nextToken.type())
|| Word.TYPE_DIGIT_OR_LETTER.equalsIgnoreCase(nextToken.type()))
) {
final char[] buffer = nextToken.termBuffer();
final int length = nextToken.termLength();
byte lastType = (byte) Character.getType(buffer[0]); //与上次的字符是否同类
int termBufferOffset = 0;
int termBufferLength = 0;
for(int i=0;i<length;i++) {
byte type = (byte) Character.getType(buffer[i]);