[
https://issues.apache.org/jira/browse/LUCENE-942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12508039
]
Hoss Man commented on LUCENE-942:
---------------------------------
that makes sense ... but there is still a state issue of "don't call topDocs()
until done collecting" .. as is a TopDocCollector can't be reused (for more
then one search) because totalHits grows without ever being reset, but hq does
get reset when topDocs() is called ... currently this is unintentionally
enforced by the ArrayIndexOutOfBoundsException, it would be a good idea to
continue to enforce it (with an exception that has a better class/message)
a finer point thta some might nit pick about is that it's generally considered
a bad idea to return a refrence a member array since your client can mutate it
out from under you ... i don't personally think that's much of a concern in
this case since there is no expectation that TopDocCollector will ever touch
the array again.
> 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]