This combines queries such that the best (that is, highest-scoring) match of it's subqueries contributes to the final score.
List<Query> disjuncts = new ArrayList<Query>();
disjuncts.add(new TermQuery(new Term("fieldname", "hello")));
disjuncts.add(new TermQuery(...