diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java index 8d6ef78f84..2dbe4f3744 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java @@ -742,26 +742,42 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS searcher = getSearcher(indexer); IndexReader reader = searcher.getIndexReader(); TermEnum terms = reader.terms(new Term(field, "")); - while (terms.next()) + do { Term term = terms.term(); - if(!term.field().equals(field)) + if (term != null) { - break; - } - int freq = terms.docFreq(); - Pair pair = new Pair(term.text(), Integer.valueOf(freq)); - if (answer.size() < count) - { - if (answer.size() == 0) + if(!term.field().equals(field)) { - answer.add(pair); + break; } - else if (answer.get(answer.size() - 1).getSecond().compareTo(pair.getSecond()) >= 0) + int freq = terms.docFreq(); + Pair pair = new Pair(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> it = answer.listIterator(); it.hasNext(); /**/) + { + Pair 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> it = answer.listIterator(); it.hasNext(); /**/) { @@ -773,27 +789,14 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS break; } } + answer.removeLast(); } - } - else if (answer.get(count - 1).getSecond().compareTo(pair.getSecond()) < 0) - { - for (ListIterator> it = answer.listIterator(); it.hasNext(); /**/) + else { - Pair test = it.next(); - if (test.getSecond().compareTo(pair.getSecond()) < 0) - { - it.previous(); - it.add(pair); - break; - } + // off the end } - answer.removeLast(); } - else - { - // off the end - } - } + } while (terms.next()); terms.close(); return answer;