@Test public void testQueryPureNot() { Schema schema = schema().mapper("name", stringMapper()).build(); BooleanCondition condition = bool().not(match("name", "jonathan")).boost(0.4).build(); BooleanQuery query = (BooleanQuery) condition.query(schema); assertEquals(2, query.getClauses().length); assertEquals(0.4f, query.getBoost(), 0f); }
@Test public void testQueryEmpty() { Schema schema = schema().build(); BooleanCondition condition = bool().boost(0.4).build(); BooleanQuery query = (BooleanQuery) condition.query(schema); assertEquals(0, query.getClauses().length); assertEquals(0.4f, query.getBoost(), 0f); }
@Test public void testToString() { BooleanCondition condition = bool() .must(match("name", "jonathan"), match("age", 18)) .should(match("color", "green")) .not(match("country", "england")) .boost(0.5f) .build(); assertEquals( "BooleanCondition{boost=0.5, " + "must=[MatchCondition{boost=1.0, field=name, value=jonathan}, " + "MatchCondition{boost=1.0, field=age, value=18}], " + "should=[MatchCondition{boost=1.0, field=color, value=green}], " + "not=[MatchCondition{boost=1.0, field=country, value=england}]}", condition.toString()); }
@Test public void testQuery() { Schema schema = schema() .mapper("name", stringMapper()) .mapper("color", stringMapper()) .mapper("country", stringMapper()) .mapper("age", integerMapper()) .defaultAnalyzer("default") .build(); BooleanCondition condition = bool() .must(match("name", "jonathan"), range("age").lower(18).includeLower(true)) .should(match("color", "green"), match("color", "blue")) .not(match("country", "england")) .boost(0.4f) .build(); BooleanQuery query = (BooleanQuery) condition.query(schema); assertEquals(5, query.getClauses().length); assertEquals(0.4f, query.getBoost(), 0f); }
private void combine(boolean isConjunction, FilterConditionContext fcc) { BaseCondition rightCondition = ((BaseCondition) fcc).getRoot(); if (isConjunction && parent instanceof OrCondition) { BooleanCondition p = new AndCondition(this, rightCondition); ((BooleanCondition) parent).replaceChildCondition(this, p); parent = p; rightCondition.setParent(p); } else { BaseCondition root = getRoot(); BooleanCondition p = isConjunction ? new AndCondition(root, rightCondition) : new OrCondition(root, rightCondition); root.setParent(p); rightCondition.setParent(p); } rightCondition.setQueryBuilder(queryBuilder); }