Search in sources :

Example 1 with TermCondition

use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.

the class ConditionTestCase method testChoiceCondition.

public void testChoiceCondition() {
    TermCondition term1 = new TermCondition("foo");
    TermCondition term2 = new TermCondition("bar");
    ChoiceCondition choice = new ChoiceCondition();
    choice.addCondition(term1);
    choice.addCondition(term2);
    Query query1 = new Query("?query=foo+bar");
    assertTrue(query1 + " matches " + choice, choice.matches(new Evaluation(query1).freshRuleEvaluation()));
    Query query2 = new Query("?query=foo");
    assertTrue(query2 + " matches " + choice, choice.matches(new Evaluation(query2).freshRuleEvaluation()));
    Query query3 = new Query("?query=bar");
    assertTrue(query3 + " matches " + choice, choice.matches(new Evaluation(query3).freshRuleEvaluation()));
}
Also used : Evaluation(com.yahoo.prelude.semantics.engine.Evaluation) TermCondition(com.yahoo.prelude.semantics.rule.TermCondition) ChoiceCondition(com.yahoo.prelude.semantics.rule.ChoiceCondition) Query(com.yahoo.search.Query)

Example 2 with TermCondition

use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.

the class ConditionTestCase method testSequenceCondition.

public void testSequenceCondition() {
    TermCondition term1 = new TermCondition("foo");
    TermCondition term2 = new TermCondition("bar");
    SequenceCondition sequence = new SequenceCondition();
    sequence.addCondition(term1);
    sequence.addCondition(term2);
    Query query = new Query("?query=foo+bar");
    assertTrue(query + " matches " + sequence, sequence.matches(new Evaluation(query).freshRuleEvaluation()));
    Query query2 = new Query("?query=foo");
    assertFalse(query2 + " does not match " + sequence, sequence.matches(new Evaluation(query2).freshRuleEvaluation()));
    Query query3 = new Query("?query=bar");
    assertFalse(query3 + " does not match " + sequence, sequence.matches(new Evaluation(query3).freshRuleEvaluation()));
}
Also used : Evaluation(com.yahoo.prelude.semantics.engine.Evaluation) TermCondition(com.yahoo.prelude.semantics.rule.TermCondition) Query(com.yahoo.search.Query) SequenceCondition(com.yahoo.prelude.semantics.rule.SequenceCondition)

Example 3 with TermCondition

use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.

the class ConditionTestCase method testNamedConditionReference.

public void testNamedConditionReference() {
    TermCondition term = new TermCondition("foo");
    NamedCondition named = new NamedCondition("cond", term);
    ConditionReference reference = new ConditionReference("cond");
    // To initialize the condition reference...
    ProductionRule rule = new ReplacingProductionRule();
    rule.setCondition(reference);
    rule.setProduction(new ProductionList());
    RuleBase ruleBase = new RuleBase();
    ruleBase.setName("test");
    ruleBase.addCondition(named);
    ruleBase.addRule(rule);
    ruleBase.initialize();
    Query query = new Query("?query=foo");
    assertTrue(query + "  matches " + reference, reference.matches(new Evaluation(query).freshRuleEvaluation()));
}
Also used : NamedCondition(com.yahoo.prelude.semantics.rule.NamedCondition) ConditionReference(com.yahoo.prelude.semantics.rule.ConditionReference) Evaluation(com.yahoo.prelude.semantics.engine.Evaluation) TermCondition(com.yahoo.prelude.semantics.rule.TermCondition) ProductionRule(com.yahoo.prelude.semantics.rule.ProductionRule) ReplacingProductionRule(com.yahoo.prelude.semantics.rule.ReplacingProductionRule) Query(com.yahoo.search.Query) ReplacingProductionRule(com.yahoo.prelude.semantics.rule.ReplacingProductionRule) ProductionList(com.yahoo.prelude.semantics.rule.ProductionList) RuleBase(com.yahoo.prelude.semantics.RuleBase)

Example 4 with TermCondition

use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.

the class ConditionTestCase method testTermCondition.

public void testTermCondition() {
    TermCondition term = new TermCondition("foo");
    Query query = new Query("?query=foo");
    assertTrue(term.matches(new Evaluation(query).freshRuleEvaluation()));
}
Also used : Evaluation(com.yahoo.prelude.semantics.engine.Evaluation) TermCondition(com.yahoo.prelude.semantics.rule.TermCondition) Query(com.yahoo.search.Query)

Example 5 with TermCondition

use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.

the class ProductionRuleTestCase method testProductionRule.

public void testProductionRule() {
    TermCondition term = new TermCondition("sony");
    NamedCondition named = new NamedCondition("brand", term);
    ConditionReference reference = new ConditionReference("brand");
    TermProduction termProduction = new ReferenceTermProduction("brand", "brand");
    ProductionList productionList = new ProductionList();
    productionList.addProduction(termProduction);
    ProductionRule rule = new ReplacingProductionRule();
    rule.setCondition(reference);
    rule.setProduction(productionList);
    // To initialize the condition reference...
    RuleBase ruleBase = new RuleBase();
    ruleBase.setName("test");
    ruleBase.addCondition(named);
    ruleBase.addRule(rule);
    ruleBase.initialize();
    assertTrue("Brand is referenced", rule.matchReferences().contains("brand"));
    Query query = new Query("?query=sony");
    RuleEvaluation e = new Evaluation(query).freshRuleEvaluation();
    assertTrue(rule.matches(e));
    rule.produce(e);
    assertEquals("brand:sony", query.getModel().getQueryTree().getRoot().toString());
}
Also used : NamedCondition(com.yahoo.prelude.semantics.rule.NamedCondition) ConditionReference(com.yahoo.prelude.semantics.rule.ConditionReference) Evaluation(com.yahoo.prelude.semantics.engine.Evaluation) RuleEvaluation(com.yahoo.prelude.semantics.engine.RuleEvaluation) TermCondition(com.yahoo.prelude.semantics.rule.TermCondition) ProductionRule(com.yahoo.prelude.semantics.rule.ProductionRule) ReplacingProductionRule(com.yahoo.prelude.semantics.rule.ReplacingProductionRule) Query(com.yahoo.search.Query) ReplacingProductionRule(com.yahoo.prelude.semantics.rule.ReplacingProductionRule) TermProduction(com.yahoo.prelude.semantics.rule.TermProduction) ReferenceTermProduction(com.yahoo.prelude.semantics.rule.ReferenceTermProduction) ReferenceTermProduction(com.yahoo.prelude.semantics.rule.ReferenceTermProduction) ProductionList(com.yahoo.prelude.semantics.rule.ProductionList) RuleBase(com.yahoo.prelude.semantics.RuleBase) RuleEvaluation(com.yahoo.prelude.semantics.engine.RuleEvaluation)

Aggregations

Evaluation (com.yahoo.prelude.semantics.engine.Evaluation)5 TermCondition (com.yahoo.prelude.semantics.rule.TermCondition)5 Query (com.yahoo.search.Query)5 RuleBase (com.yahoo.prelude.semantics.RuleBase)2 ConditionReference (com.yahoo.prelude.semantics.rule.ConditionReference)2 NamedCondition (com.yahoo.prelude.semantics.rule.NamedCondition)2 ProductionList (com.yahoo.prelude.semantics.rule.ProductionList)2 ProductionRule (com.yahoo.prelude.semantics.rule.ProductionRule)2 ReplacingProductionRule (com.yahoo.prelude.semantics.rule.ReplacingProductionRule)2 RuleEvaluation (com.yahoo.prelude.semantics.engine.RuleEvaluation)1 ChoiceCondition (com.yahoo.prelude.semantics.rule.ChoiceCondition)1 ReferenceTermProduction (com.yahoo.prelude.semantics.rule.ReferenceTermProduction)1 SequenceCondition (com.yahoo.prelude.semantics.rule.SequenceCondition)1 TermProduction (com.yahoo.prelude.semantics.rule.TermProduction)1