public void testAllOptional() throws Exception { BooleanQuery q = new BooleanQuery(); for (int i = 1; i <= 4; i++) { q.add(new TermQuery(new Term("data", "" + i)), BooleanClause.Occur.SHOULD); // false, false); } q.setMinimumNumberShouldMatch(2); // match at least two of 4 verifyNrHits(q, 2); }
@Override public Query apply(Function input, Context context) { assert input != null; BooleanQuery query = new BooleanQuery(); query.setMinimumNumberShouldMatch(1); for (Symbol symbol : input.arguments()) { query.add(process(symbol, context), BooleanClause.Occur.SHOULD); } return query; }
public void testNoOptionalButMin2() throws Exception { /* one required, no optional */ BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); // true, false); q.setMinimumNumberShouldMatch(1); // 1 of 0 optional verifyNrHits(q, 0); }
public void testBQ20() throws Exception { BooleanQuery q = new BooleanQuery(); q.setMinimumNumberShouldMatch(2); q.add(new TermQuery(new Term(FIELD, "QQQQQ")), BooleanClause.Occur.SHOULD); q.add(new TermQuery(new Term(FIELD, "yy")), BooleanClause.Occur.SHOULD); q.add(new TermQuery(new Term(FIELD, "zz")), BooleanClause.Occur.SHOULD); q.add(new TermQuery(new Term(FIELD, "w5")), BooleanClause.Occur.SHOULD); q.add(new TermQuery(new Term(FIELD, "w4")), BooleanClause.Occur.SHOULD); qtest(q, new int[] {0, 3}); }
@Override protected Query applyArrayLiteral(Reference reference, Literal arrayLiteral, Context context) throws IOException { // col like ANY (['a', 'b']) --> or(like(col, 'a'), like(col, 'b')) BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.setMinimumNumberShouldMatch(1); for (Object value : toIterable(arrayLiteral.value())) { booleanQuery.add( likeQuery.toQuery(reference, value, context), BooleanClause.Occur.SHOULD); } return booleanQuery; }
public void testOneOptionalEqualToMin() throws Exception { /* two required, one optional */ BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); // true, false); q.add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.MUST); // true, false); q.setMinimumNumberShouldMatch(1); // 1 of 1 optional verifyNrHits(q, 1); }
@Override protected Query applyArrayLiteral(Reference reference, Literal arrayLiteral, Context context) throws IOException { // col < ANY ([1,2,3]) --> or(col<1, col<2, col<3) BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.setMinimumNumberShouldMatch(1); for (Object value : toIterable(arrayLiteral.value())) { booleanQuery.add( inverseRangeQuery.toQuery(reference, reference.valueType(), value), BooleanClause.Occur.SHOULD); } return booleanQuery; }
public void testOneProhibAndSomeOptional() throws Exception { /* one prohibited, some optional */ BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); // false, true ); q.add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); // false, false); q.setMinimumNumberShouldMatch(2); // 2 of 3 optional verifyNrHits(q, 1); }
public void testOneReqAndSomeOptional() throws Exception { /* one required, some optional */ BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); // true, false); q.add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.SHOULD); // false, false); q.setMinimumNumberShouldMatch(2); // 2 of 3 optional verifyNrHits(q, 5); }
@Override protected Query applyArrayReference( Reference arrayReference, Literal literal, Context context) throws IOException { // 1 != any ( col ) --> gt 1 or lt 1 String columnName = arrayReference.info().ident().columnIdent().fqn(); Object value = literal.value(); QueryBuilderHelper builder = QueryBuilderHelper.forType(arrayReference.valueType()); BooleanQuery query = new BooleanQuery(); query.setMinimumNumberShouldMatch(1); query.add( builder.rangeQuery(columnName, value, null, false, false), BooleanClause.Occur.SHOULD); query.add( builder.rangeQuery(columnName, null, value, false, false), BooleanClause.Occur.SHOULD); return query; }
public void testSomeReqOneProhibAndSomeOptional() throws Exception { /* two required, one prohibited, some optional */ BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); // true, false); q.add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); // true, false); q.add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); // false, true ); q.add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); // false, false); q.setMinimumNumberShouldMatch(3); // 3 of 4 optional verifyNrHits(q, 1); }
public void testMinHigherThenNumOptional() throws Exception { /* two required, two prohibited, some optional */ BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); // true, false); q.add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); // true, false); q.add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); // false, true ); q.add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); // false, false); q.add(new TermQuery(new Term("data", "C")), BooleanClause.Occur.MUST_NOT); // false, true ); q.setMinimumNumberShouldMatch(90); // 90 of 4 optional ?!?!?! verifyNrHits(q, 0); }