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());
}
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());
}
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());
}
Aggregations