Greetings all. I am having an issue that is driving me mad.
I have many indexes ranging in size from 500K docs to 40mil docs. When I do
a simple query containing multiple terms on any of the indexes, I get this:
java.lang.ArrayIndexOutOfBoundsException
at org.apache.lucene.util.ScorerDocQueue.downHeap(ScorerDocQueue.java)
at
org.apache.lucene.util.ScorerDocQueue.checkAdjustElsePop(ScorerDocQueue.java)
at
org.apache.lucene.util.ScorerDocQueue.topNextAndAdjustElsePop(ScorerDocQueue.java)
at
org.apache.lucene.search.DisjunctionSumScorer.advanceAfterCurrent(DisjunctionSumScorer.java)
at
org.apache.lucene.search.DisjunctionSumScorer.next(DisjunctionSumScorer.java)
at org.apache.lucene.search.BooleanScorer2.score(BooleanScorer2.java)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:136)
at org.apache.lucene.search.Searcher.search(Searcher.java:126)
at org.apache.lucene.search.Searcher.search(Searcher.java:105)
at LuceneIndexer.manualQuery(LuceneIndexer.java)
This is the code that does the search:
public static String manualQuery(String index, String qstring) {
try {
final IndexReader ir = IndexReader.open(index);
int len = ir.maxDoc();
ir.close();
final BitSet bits = new BitSet(len);
long start = System.currentTimeMillis();
QueryParser parser =
new QueryParser("note", new StandardAnalyzer(new
File("/lucenedata/stopwords.txt")));
Query query;
query = parser.parse(qstring);
final IndexSearcher searcher = new IndexSearcher(index);
searcher.search(query, new HitCollector() {
public void collect(int i, float v) {
bits.set(i);
}
});
searcher.close();
long stop = System.currentTimeMillis();
return "Time: " + (stop - start) + " Count: " +
bits.cardinality();
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter(sw);
e.printStackTrace(out);
return "error: " + e.toString() + " \n " + sw.toString();
}
}
Now for the real problem. I can run this with this string "phil OR john OR
bob or samuel" and it works fine. If I add a 4th term: "phil OR john OR bob
or samuel or sally" I get the error above. I can change the terms and run on
another index and it may work with 4 terms but not with 5.
I have seen the various bug reports on similar issue, but I did a checkindex
on one of my indexes and it returned 'true'. I also just upgraded to 2.4 and
it still happens.
I am desperate and on a deadline. There will be some serious karma coming to
anyone with ideas.
Thanks.
--
View this message in context:
http://www.nabble.com/help%3A-java.lang.ArrayIndexOutOfBoundsException-ScorerDocQueue.downHeap-tp21037262p21037262.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]