Search in sources :

Example 1 with RuleBase

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

the class RuleBaseBenchmark method benchmark.

public void benchmark(String ruleBaseFile, String queryFile, int iterations) throws IOException, ParseException {
    String fsaFile = null;
    if (ruleBaseFile.endsWith(".sr")) {
        fsaFile = ruleBaseFile.substring(0, ruleBaseFile.length() - 3) + ".fsa";
        File fsa = new File(fsaFile);
        if (!fsa.exists()) {
            fsaFile = null;
        }
    }
    RuleBase ruleBase = new RuleImporter().importFile(ruleBaseFile, fsaFile);
    ArrayList<String> queries = new ArrayList<>();
    BufferedReader reader = new BufferedReader(new FileReader(queryFile));
    String line;
    while ((line = reader.readLine()) != null) {
        queries.add(line);
    }
    Date start = new Date();
    for (int i = 0; i < iterations; i++) {
        for (Iterator<String> iter = queries.iterator(); iter.hasNext(); ) {
            String queryString = iter.next();
            Query query = new Query("?query=" + queryString);
            ruleBase.analyze(query, 0);
        }
    }
    Date end = new Date();
    long elapsed = end.getTime() - start.getTime();
    System.out.print("BENCHMARK: rulebase=" + ruleBaseFile + "\n           fsa=" + fsaFile + "\n           queries=" + queryFile + "\n           iterations=" + iterations + "\n           elapsed=" + elapsed + "ms\n");
}
Also used : Query(com.yahoo.search.Query) ArrayList(java.util.ArrayList) Date(java.util.Date) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) RuleImporter(com.yahoo.prelude.semantics.RuleImporter) File(java.io.File) RuleBase(com.yahoo.prelude.semantics.RuleBase)

Example 2 with RuleBase

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

the class AutomataTestCase method testAutomataRuleBase.

public void testAutomataRuleBase() throws Exception {
    RuleBase ruleBase = searcher.getDefaultRuleBase();
    assertEquals(RuleBase.class, ruleBase.getClass());
    assertTrue(ruleBase.getSource().endsWith(root + "automatarules.sr"));
    assertEquals(root + "semantics.fsa", ruleBase.getAutomataFile());
    Query query = new Query("?query=sony+digital+camera");
    ruleBase.analyze(query, 0);
    assertEquals("RANK (AND sony digital camera) dsp1:sony dsp5:digicamera", query.getModel().getQueryTree().getRoot().toString());
    query = new Query("?query=sony+digital+camera&rules.reload");
    ruleBase = searcher.getDefaultRuleBase();
    assertTrue(ruleBase.getSource().endsWith(root + "automatarules.sr"));
    assertEquals(root + "semantics.fsa", ruleBase.getAutomataFile());
    ruleBase.analyze(query, 0);
    assertEquals("RANK (AND sony digital camera) dsp1:sony dsp5:digicamera", query.getModel().getQueryTree().getRoot().toString());
}
Also used : Query(com.yahoo.search.Query) RuleBase(com.yahoo.prelude.semantics.RuleBase)

Example 3 with RuleBase

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

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

the class SemanticRulesTest method toMap.

private static Map<String, RuleBase> toMap(SemanticRulesConfig config) throws ParseException, IOException {
    RuleImporter ruleImporter = new RuleImporter(config);
    Map<String, RuleBase> ruleBaseMap = new HashMap<>();
    for (SemanticRulesConfig.Rulebase ruleBaseConfig : config.rulebase()) {
        RuleBase ruleBase = ruleImporter.importConfig(ruleBaseConfig);
        if (ruleBaseConfig.isdefault())
            ruleBase.setDefault(true);
        ruleBaseMap.put(ruleBase.getName(), ruleBase);
    }
    return ruleBaseMap;
}
Also used : HashMap(java.util.HashMap) SemanticRulesConfig(com.yahoo.prelude.semantics.SemanticRulesConfig) RuleImporter(com.yahoo.prelude.semantics.RuleImporter) RuleBase(com.yahoo.prelude.semantics.RuleBase)

Example 5 with RuleBase

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

the class SemanticRulesTest method semanticRulesTest.

@Test
public void semanticRulesTest() throws ParseException, IOException {
    SemanticRuleBuilder ruleBuilder = new SemanticRuleBuilder();
    SemanticRules rules = ruleBuilder.build(FilesApplicationPackage.fromFile(new File(root)));
    SemanticRulesConfig.Builder configBuilder = new SemanticRulesConfig.Builder();
    rules.getConfig(configBuilder);
    SemanticRulesConfig config = new SemanticRulesConfig(configBuilder);
    Map<String, RuleBase> ruleBases = toMap(config);
    assertEquals(2, ruleBases.size());
    assertTrue(ruleBases.containsKey("common"));
    assertTrue(ruleBases.containsKey("other"));
    assertFalse(ruleBases.get("common").isDefault());
    assertTrue(ruleBases.get("other").isDefault());
}
Also used : SemanticRulesConfig(com.yahoo.prelude.semantics.SemanticRulesConfig) File(java.io.File) RuleBase(com.yahoo.prelude.semantics.RuleBase) Test(org.junit.Test)

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