В ОП вопросе есть два варианта:
- Что такое «процесс получения токенов из TokenStream»?
- «Может кто-нибудь объяснить, как получить токеноподобную информацию из TokenStream?»
Последние версии документации Lucene для Token
скажем (выделение добавлено):
ПРИМЕЧАНИЕ. Начиная с версии 2.9 ... больше не требуется , чтобы больше использовать Token, с новым API TokenStream его можно использовать как вспомогательный класс, который реализует все атрибуты, что особенно полезно для простого переключения от старого к новому API TokenStream.
И TokenStream
говорит, что его API:
... перешел от токена к атрибуту ... предпочтительным способом хранения информации токена является использование AttributeImpls.
Другие ответы на этот вопрос охватывают # 2 выше: как получить токеноподобную информацию из TokenStream
«новым» рекомендуемым способом, используя атрибуты. Читая документацию, разработчики Lucene предполагают, что это изменение было сделано, в частности, для уменьшения количества отдельных объектов, создаваемых за один раз.
Но, как отмечают некоторые люди в комментариях к этим ответам, они не отвечают непосредственно на вопрос № 1: как получить Token
, если вы действительно хотите / нуждаетесь в этом типе?
С тем же изменением API, которое делает TokenStream
AttributeSource
, Token
теперь реализует Attribute
и может использоваться с TokenStream.addAttribute так же, как другие ответы показывают для CharTermAttribute
и OffsetAttribute
. Таким образом, они действительно ответили на ту часть исходного вопроса, они просто не показали его.
Важно, что, хотя этот подход позволит вам получить доступ к Token
во время зацикливания, он по-прежнему является единственным объектом, независимо от того, сколько логических токенов находится в потоке. Каждый вызов incrementToken()
будет изменять состояние Token
, возвращаемого с addAttribute
; Поэтому, если ваша цель состоит в том, чтобы создать коллекцию различных Token
объектов, которые будут использоваться вне цикла, вам потребуется дополнительная работа для создания нового Token
объекта в качестве (глубокой?) Копии. .