public static TermStats[] getHighFreqTerms(IndexReader reader, int numTerms, String field, Comparator<TermStats> comparator) throws Exception {TermStatsQueue tiq = null;if (field != null) {Terms terms = MultiTerms.getTerms(reader, field);if (terms == null) {throw new RuntimeException("field " + field + " not found");}TermsEnum termsEnum = terms.iterator();tiq = new TermStatsQueue(numTerms, comparator);tiq.fill(field, termsEnum);} else {Collection<String> fields = FieldInfos.getIndexedFields(reader);if (fields.size() == 0) {throw new RuntimeException("no fields found for this index");}tiq = new TermStatsQueue(numTerms, comparator);for (String fieldName : fields) {Terms terms = MultiTerms.getTerms(reader, fieldName);if (terms != null) {tiq.fill(fieldName, terms.iterator());}}}TermStats[] result = new TermStats[tiq.size()];int count = tiq.size() - 1;while (tiq.size() != 0) {result[count] = tiq.pop();count--;}return result;}

public static TermStats [ ] getHighFreqTerms ( IndexReader reader , int numTerms , String field , Comparator < TermStats > comparator ) throws Exception { TermStatsQueue tiq = null ; if ( field != null ) { Terms terms = MultiTerms . getTerms ( reader , field ) ; if ( terms == null ) { throw new RuntimeException ( "field " + field + " not found" ) ; } TermsEnum termsEnum = terms . iterator ( ) ; tiq = new TermStatsQueue ( numTerms , comparator ) ; tiq . fill ( field , termsEnum ) ; } else { Collection < String > fields = FieldInfos . getIndexedFields ( reader ) ; if ( fields . size ( ) == 0 ) { throw new RuntimeException ( "no fields found for this index" ) ; } tiq = new TermStatsQueue ( numTerms , comparator ) ; for ( String fieldName : fields ) { Terms terms = MultiTerms . getTerms ( reader , fieldName ) ; if ( terms != null ) { tiq . fill ( fieldName , terms . iterator ( ) ) ; } } } TermStats [ ] result = new TermStats [ tiq . size ( ) ] ; int count = tiq . size ( ) - 1 ; while ( tiq . size ( ) != 0 ) { result [ count ] = tiq . pop ( ) ; count -- ; } return result ; }
public static TermStats[] GetHighFreqTerms(IndexReader reader, int numTerms, string field, IComparer<TermStats> comparer){TermStatsQueue tiq = null;if (field != null){Fields fields = MultiFields.GetFields(reader);if (fields == null){throw new Exception("field " + field + " not found");}Terms terms = fields.GetTerms(field);if (terms != null){TermsEnum termsEnum = terms.GetIterator(null);tiq = new TermStatsQueue(numTerms, comparer);tiq.Fill(field, termsEnum);}}else{Fields fields = MultiFields.GetFields(reader);if (fields == null){throw new Exception("no fields found for this index");}tiq = new TermStatsQueue(numTerms, comparer);foreach (string fieldName in fields){Terms terms = fields.GetTerms(fieldName);if (terms != null){tiq.Fill(fieldName, terms.GetIterator(null));}}}TermStats[] result = new TermStats[tiq.Count];int count = tiq.Count - 1;while (tiq.Count != 0){result[count] = tiq.Pop();count--;}return result;}
