проблема связана с анализатором, так как я ранее разместил код для анализатора, на самом деле поток токенов необходимо перезаписывать для каждой новой записи текста, подлежащей токенизации.
public TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException {
TokenStream stream = (TokenStream) getPreviousTokenStream();
if (stream == null) {
stream = new AttachmentNameTokenizer(reader);
if (stemmTokens)
stream = new SnowballFilter(stream, name);
setPreviousTokenStream(stream); // ---------------> problem was here
} else if (stream instanceof Tokenizer) {
( (Tokenizer) stream ).reset(reader);
}
return stream;
}
каждый раз, когда я устанавливаю предыдущий поток токенов, следующее текстовое поле должно быть отдельно разбито на токены, оно всегда начинается с конечного смещения последнего потока токенов, из-за чего термин векторное смещение неверно для нового потока.
ublic TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException {
TokenStream stream = (TokenStream) getPreviousTokenStream();
if (stream == null) {
stream = new AttachmentNameTokenizer(reader);
if (stemmTokens)
stream = new SnowballFilter(stream, name);
} else if (stream instanceof Tokenizer) {
( (Tokenizer) stream ).reset(reader);
}
return stream;
}