Search in sources :

Example 6 with RuleBase

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

the class SemanticsParserTestCase method testRuleReading.

@Test
public void testRuleReading() throws java.io.IOException, ParseException {
    RuleBase rules = new RuleImporter().importFile(ROOT + "rules.sr");
    Iterator<?> i = rules.ruleIterator();
    assertEquals("[listing] [preposition] [place] -> listing:[listing] place:[place]!150", i.next().toString());
    assertEquals("[listing] [place] +> place:[place]", i.next().toString());
    assertEquals("[brand] -> brand:[brand]", i.next().toString());
    assertEquals("[category] -> category:[category]", i.next().toString());
    assertEquals("digital camera -> digicamera", i.next().toString());
    assertEquals("(parameter.ranking='cat'), (parameter.ranking='cat0') -> one", i.next().toString());
    assertFalse(i.hasNext());
    i = rules.conditionIterator();
    assertEquals("[listing] :- restaurant, shop, cafe, hotel", i.next().toString());
    assertEquals("[preposition] :- in, at, near", i.next().toString());
    assertEquals("[place] :- geary", i.next().toString());
    assertEquals("[brand] :- sony, dell", i.next().toString());
    assertEquals("[category] :- digital camera, camera, phone", i.next().toString());
    assertFalse(i.hasNext());
    assertTrue(rules.isDefault());
    assertEquals(ROOT + "semantics.fsa", rules.getAutomataFile());
}
Also used : RuleImporter(com.yahoo.prelude.semantics.RuleImporter) RuleBase(com.yahoo.prelude.semantics.RuleBase) Test(org.junit.Test)

Example 7 with RuleBase

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

the class ConfigurationTestCase method testReadingConfigurationRuleBase.

public void testReadingConfigurationRuleBase() {
    RuleBase parent = searcher.getRuleBase("parent");
    assertNotNull(parent);
    assertEquals("parent", parent.getName());
    assertEquals("semantic-rules.cfg", parent.getSource());
}
Also used : RuleBase(com.yahoo.prelude.semantics.RuleBase)

Example 8 with RuleBase

use of com.yahoo.prelude.semantics.RuleBase 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

RuleBase (com.yahoo.prelude.semantics.RuleBase)8 Query (com.yahoo.search.Query)4 RuleImporter (com.yahoo.prelude.semantics.RuleImporter)3 SemanticRulesConfig (com.yahoo.prelude.semantics.SemanticRulesConfig)2 Evaluation (com.yahoo.prelude.semantics.engine.Evaluation)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 TermCondition (com.yahoo.prelude.semantics.rule.TermCondition)2 File (java.io.File)2 Test (org.junit.Test)2 RuleEvaluation (com.yahoo.prelude.semantics.engine.RuleEvaluation)1 ReferenceTermProduction (com.yahoo.prelude.semantics.rule.ReferenceTermProduction)1 TermProduction (com.yahoo.prelude.semantics.rule.TermProduction)1 BufferedReader (java.io.BufferedReader)1 FileReader (java.io.FileReader)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1