Hi,
I have an index writer that is used to from a pool of threads to index. The
index writer is using a "PerFieldAnalyzerWrapper":
this.analyzer = new PerFieldAnalyzerWrapper(DEFAULT_ANALYZER, fields);
If I add the documents single threaded I dont get any exception. In the case
that I add the documents through a pool of threads, I get the exception below:
java.lang.IllegalStateException: TokenStream contract violation:
reset()/close() call missing, reset() called multiple times, or subclass does
not call super.reset(). Please see Javadocs of TokenStream class for more
information about the correct consuming workflow.
at org.apache.lucene.analysis.Tokenizer$1.read(Tokenizer.java:110)
at
org.apache.lucene.analysis.standard.StandardTokenizerImpl.zzRefill(StandardTokenizerImpl.java:1023)
at
org.apache.lucene.analysis.standard.StandardTokenizerImpl.getNextToken(StandardTokenizerImpl.java:1230)
at
org.apache.lucene.analysis.standard.StandardTokenizer.incrementToken(StandardTokenizer.java:178)
at
org.apache.lucene.analysis.standard.StandardFilter.incrementToken(StandardFilter.java:49)
at
org.apache.lucene.analysis.core.LowerCaseFilter.incrementToken(LowerCaseFilter.java:54)
at
at.knowcenter.ir.index.analyzer.StemmingTokenStream.incrementToken(StemmingTokenStream.java:94)
at
org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:108)
at
org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:248)
at
org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:253)
at
org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:465)
at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1537)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1207)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1188)
When I use the "PerFieldAnalyzerWrapper" only with the analyzer as default
analyzer:
this.analyzer = new PerFieldAnalyzerWrapper(DEFAULT_ANALYZER);
I dont get the exception.
Looks like there is something wrong to the usecase. Does anybody know how to
handle this problem?
Thank you in advance!