Когда я передаю текст через StandardAnalyzer, я могу получить TokenStream и, итерации по нему, получить различные атрибуты токена, такие как OffsetAtribute.Получить атрибуты из условий LuceneEnum
public static void displayTokensWithFullInfo(TokenStream stream) throws IOException {
CharTermAttribute charAttribute = stream.addAttribute(CharTermAttribute.class);
OffsetAttribute offsetAttribute = stream.addAttribute(OffsetAttribute.class);
stream.reset();
while (stream.incrementToken()) {
System.out.print(offsetAttribute.startOffset() + "->" + offsetAttribute.endOffset() + " \"");
System.out.print(charAttribute.toString());
}
stream.close();
}
После сохранения TokenStream, индексировать, я пытаюсь получить OffsetAttribute от TermsEnum, но значения смещения я получаю всегда euqual 0.
IndexReader reader = new IndexSearcher(DirectoryReader.open(directory)).getIndexReader();
Terms terms = MultiFields.getTerms(reader,"field");
TermsEnum termsEnum = terms.iterator();
BytesRef bytesRef = termsEnum.next();
while(bytesRef != null){
AttributeSource attributeSource = termsEnum.attributes();
OffsetAttribute offsetAttribute = attributeSource.addAttribute(OffsetAttribute.class);
bytesRef = termsEnum.next();
}
Что я делаю неправильно? Возможно ли получить этот атрибут из TermVector? Что делать, если я хочу создать свою собственную реализацию Атрибута, делает ли Lucene эту лазейку?
спасибо.