String defaultField = ...; Analyzer analyzer = ...; QueryParser queryParser = new QueryParser(defaultField, analyzer); queryParser.setDefaultOperator(QueryParser.Operator.AND); Query query = queryParser.parse("Searching is fun"); if (required && !prohibited) clauses.addElement(new BooleanClause(q, BooleanClause.Occur.MUST)); else if (!required && !prohibited) clauses.addElement(new BooleanClause(q, BooleanClause.Occur.SHOULD)); else if (!required && prohibited) clauses.addElement(new BooleanClause(q, BooleanClause.Occur.MUST_NOT)); else throw new RuntimeException("Clause cannot be both required and prohibited");