對於Lucene,我只想對tokenStream的tokenFillter的最後一個標記做一些處理。例如,給出句子「你好,我的世界」,只適用於我的處理「世界」,而不是其他的令牌。Lucene TokenFilter:如何識別來自TokenStream的最後一個令牌?
我可以通過先迭代tokenStream的整個輸入來獲得最後一個標記的偏移量,然後從第一個標記重新開始。因爲我已經知道最後一個標記的偏移量,所以我可以識別當前標記是否是最後一個標記。
但是,由於循環兩次肯定是效率低下,我想只用迭代tokenStream一次,但似乎很難找到正確的方式。
例如,假設MyFilter看起來像:(當然,這個MyFilter是TokenFilter的基本結構)。
public class MyFilter extends TokenFilter{
public MyFilter(TokenStream input){
super(input);
}
@Override
public boolean incrementToken() throws IOException {
if (input.incrementToken()){
/*
if(current token is the last token):
Want to apply something only to the last token.
*/
return true;
}
return false;
}
}
如何識別當前令牌是否是最後一個?