Although the sample is in C #, the Lucene APIs are very similar (some differences are upper / lower case). I don't think it would be difficult to translate to java.
This use
List<Term> terms = new List<Term>();
And here is the method
void GetHitTerms(Query query,IndexSearcher searcher,int docId,List<Term> hitTerms,List<Term>rest) { if (query is TermQuery) { if (searcher.Explain(query, docId).IsMatch() == true) hitTerms.Add((query as TermQuery).GetTerm()); else rest.Add((query as TermQuery).GetTerm()); return; } if (query is BooleanQuery) { BooleanClause[] clauses = (query as BooleanQuery).GetClauses(); if (clauses == null) return; foreach (BooleanClause bc in clauses) { GetHitTerms(bc.GetQuery(), searcher, docId,hitTerms,rest); } return; } if (query is MultiTermQuery) { if (!(query is FuzzyQuery))
source share