Как правильно сбросить поток в классе lucene TokenStream - PullRequest
0 голосов
/ 17 сентября 2018

Я использую Lucene для генерации токенов для моего поискового приложения.Когда я использую приведенный ниже код для генерации токенов, которые используются другим способом, он прекрасно работает.

public TokenStream tokenStream(String fieldName, Reader reader) {
        TokenStream stream = new StandardTokenizer(version, reader);
        stream = new EdgeNGramTokenFilter(stream, EdgeNGramTokenFilter.Side.FRONT, 1, 30);
        }

Я использую версию Lucene 3.6.Но для целей отладки, чтобы увидеть токены, сгенерированные приведенным выше кодом, я добавляю приведенный ниже дополнительный код, он сгенерировал правильный токен, но в моем другом методе, который использует его, он не работает должным образом.

CharTermAttribute charTermAttribute = stream.addAttribute(CharTermAttribute.class);
while (stream.incrementToken()) {
                    String term = charTermAttribute.toString();
                    log.trace(" " + term);
                }
stream.reset();
stream.close();

Myпотребительский метод, который использует поток токенов, имеет следующий код:

tokenStream = highlightAnalyzer.tokenStream(field, new CharArrayReader(text, textOffset, textLength));
            tokenStream.reset();//**then itrate through the tokens.**

Дайте мне знать, что мне не хватает, в моем коде отладки.Как я понимаю, метод stream.reset () просто сбрасывает поток в начало.что мой потребительский код также делает, чтобы убедиться, что он потребляет поток с самого начала.В моем отладочном коде я пытался переустанавливать поток и без него, но он все еще не работает должным образом.

...