Hi, 
I have a legacy problem with the token stream. In my application I create a 
batch of documents from a unique analyzer (this due to configuration). I add 
the field using the tokenStream from the analyzer(for internal reasons). In a 
pseudo code this translates in : 

Analyzer analyzer = getFromConfig();
Collection docsToIndex; 


for (int i = 0; i < batchSize(); i ++) {
      Documet doc = new Document();
      doc.add(field, analyzer.tokenStream("fieldName", currentReader));
      docsToIndex.add(doc);
}

for (Document d : docToIndex) {
    indexWriter.add(doc);
}



I get always an exception :
TokenStream contract violation: reset()/close() call missing, reset() called 
multiple times....

I understand that the analyzer creates one TokenStream per thread and that the 
TokenStream is used from the DefaultIndexingChain during the add documents, so 
the TokenStream is shared. 

Is there a clean way I can overcome this problem? One possible way of course 
would be to get the token stream from a separate thread, but that would be a 
dirty solution. 


                                          

Reply via email to