WhitespaceTokenizer
не подходит для строк, соединенных с 0x01
. Вместо этого производная от CharTokenizer
, переопределяющая isTokenChar
.
Основная проблема с этим подходом состоит в том, что присоединение, а затем повторное разделение являются дорогостоящими; если это окажется слишком дорогим, вы можете реализовать тривиальный TokenStream
, который просто выдает токены из своего ввода.
Если под синонимами вы подразумеваете, что термин, такой как «программист», расширен до набора терминов, скажем, {«программист», «разработчик», «хакер»}, то я рекомендую использовать их в той же позиции. Вы можете использовать PositionIncrementAttribute
для управления этим.
Пример использования PositionIncrementAttribute
см. my lemmatizing TokenStream
, который испускает как словоформы, найденные в полном тексте, так и их леммы в одной и той же позиции.