[ https://issues.apache.org/jira/browse/LUCENE-942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12508025 ]
Doron Cohen commented on LUCENE-942: ------------------------------------ Perhaps simpler to make the scoreDocs[] array a private data member, which null until topDocs[] is called for the first time, and computed only once - then, repeated calls to topDocs() would use that same array... ? > TopDocCollector.topDocs throws ArrayIndexOutOfBoundsException when called > twice > ------------------------------------------------------------------------------- > > Key: LUCENE-942 > URL: https://issues.apache.org/jira/browse/LUCENE-942 > Project: Lucene - Java > Issue Type: Bug > Components: Search > Affects Versions: 2.2 > Reporter: Aaron Isotton > Priority: Minor > > Here's the implementation of TopDocCollector.topDocs(): > public TopDocs topDocs() { > ScoreDoc[] scoreDocs = new ScoreDoc[hq.size()]; > for (int i = hq.size()-1; i >= 0; i--) // put docs in array > scoreDocs[i] = (ScoreDoc)hq.pop(); > > float maxScore = (totalHits==0) > ? Float.NEGATIVE_INFINITY > : scoreDocs[0].score; > > return new TopDocs(totalHits, scoreDocs, maxScore); > } > When you call topDocs(), hq gets emptied. Thus the second time you call it > scoreDocs.length will be 0 and scoreDocs[0] will throw an > ArrayIndexOutOfBoundsException. > I don't know whether this 'call only once' semantics is intended behavior or > not; if not, it should be fixed, if yes it should be documented. > Thanks a lot for an absolutely fantastic product, > Aaron -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]