if(hit.getBegin() > doneIndex + 1){
//输出并处理从doneIndex+1 到 seg.start - 1之间的未知词段
processUnknown(segmentBuff , context , doneIndex + 1 , hit.getBegin()- 1);
}
//输出当前的词
Lexeme newLexeme = new Lexeme(context.getBuffOffset() , hit.getBegin() , context.getCursor() - hit.getBegin() + 1 , Lexeme.TYPE_CJK_NORMAL);
context.addLexeme(newLexeme);
//更新goneIndex,标识已处理
if(doneIndex < context.getCursor()){
doneIndex = context.getCursor();
}
if(hit.isPrefix()){//同时也是前缀
}else{ //后面不再可能有匹配了
//移出当前的hit
hitList.remove(hit);
}
}else if(hit.isPrefix()){//前缀,未匹配成词
}else if(hit.isUnmatch()){//不匹配
//移出当前的hit
hitList.remove(hit);
}
}
}
//处理以input为开始的一个新hit
Hit hit = Dictionary.matchInMainDict(segmentBuff, context.getCursor() , 1);
if(hit.isMatch()){//匹配成词
//判断是否有不可识别的词段
if(context.getCursor() > doneIndex + 1){
//输出并处理从doneIndex+1 到 context.getCursor()- 1之间的未知
processUnknown(segmentBuff , context , doneIndex + 1 , context.getCursor()- 1);
}
//输出当前的词
Lexeme newLexeme = new Lexeme(context.getBuffOffset() , context.getCursor() , 1 , Lexeme.TYPE_CJK_NORMAL);
context.addLexeme(newLexeme);
//更新doneIndex,标识已处理
if(doneIndex < context.getCursor()){
doneIndex = context.getCursor();
}