Slight fix-up to getTopTerms result iterator (it was skipping over the first result)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@7474 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mike Hatfield 2007-11-29 13:48:04 +00:00
parent d3d6959d6a
commit 1e89a663ef

View File

@ -742,26 +742,42 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS
searcher = getSearcher(indexer); searcher = getSearcher(indexer);
IndexReader reader = searcher.getIndexReader(); IndexReader reader = searcher.getIndexReader();
TermEnum terms = reader.terms(new Term(field, "")); TermEnum terms = reader.terms(new Term(field, ""));
while (terms.next()) do
{ {
Term term = terms.term(); Term term = terms.term();
if(!term.field().equals(field)) if (term != null)
{ {
break; if(!term.field().equals(field))
}
int freq = terms.docFreq();
Pair<String, Integer> pair = new Pair<String, Integer>(term.text(), Integer.valueOf(freq));
if (answer.size() < count)
{
if (answer.size() == 0)
{ {
answer.add(pair); break;
} }
else if (answer.get(answer.size() - 1).getSecond().compareTo(pair.getSecond()) >= 0) int freq = terms.docFreq();
Pair<String, Integer> pair = new Pair<String, Integer>(term.text(), Integer.valueOf(freq));
if (answer.size() < count)
{ {
answer.add(pair); if (answer.size() == 0)
{
answer.add(pair);
}
else if (answer.get(answer.size() - 1).getSecond().compareTo(pair.getSecond()) >= 0)
{
answer.add(pair);
}
else
{
for (ListIterator<Pair<String, Integer>> it = answer.listIterator(); it.hasNext(); /**/)
{
Pair<String, Integer> test = it.next();
if (test.getSecond().compareTo(pair.getSecond()) < 0)
{
it.previous();
it.add(pair);
break;
}
}
}
} }
else else if (answer.get(count - 1).getSecond().compareTo(pair.getSecond()) < 0)
{ {
for (ListIterator<Pair<String, Integer>> it = answer.listIterator(); it.hasNext(); /**/) for (ListIterator<Pair<String, Integer>> it = answer.listIterator(); it.hasNext(); /**/)
{ {
@ -773,27 +789,14 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS
break; break;
} }
} }
answer.removeLast();
} }
} else
else if (answer.get(count - 1).getSecond().compareTo(pair.getSecond()) < 0)
{
for (ListIterator<Pair<String, Integer>> it = answer.listIterator(); it.hasNext(); /**/)
{ {
Pair<String, Integer> test = it.next(); // off the end
if (test.getSecond().compareTo(pair.getSecond()) < 0)
{
it.previous();
it.add(pair);
break;
}
} }
answer.removeLast();
} }
else } while (terms.next());
{
// off the end
}
}
terms.close(); terms.close();
return answer; return answer;