use of com.yahoo.prelude.query.AndItem in project vespa by vespa-engine.
the class QueryRewriteTestCase method assertAndNotMovedUp.
@Test
public void assertAndNotMovedUp() {
Query query = new Query();
NotItem not = new NotItem();
not.addPositiveItem(new WordItem("a"));
not.addNegativeItem(new WordItem("na"));
AndItem and = new AndItem();
and.addItem(not);
query.getModel().getQueryTree().setRoot(and);
QueryRewrite.optimizeAndNot(query);
assertTrue(query.getModel().getQueryTree().getRoot() instanceof NotItem);
NotItem n = (NotItem) query.getModel().getQueryTree().getRoot();
assertEquals(2, n.getItemCount());
assertTrue(n.getPositiveItem() instanceof AndItem);
AndItem a = (AndItem) n.getPositiveItem();
assertEquals(1, a.getItemCount());
assertEquals("a", a.getItem(0).toString());
assertEquals("na", n.getItem(1).toString());
}
use of com.yahoo.prelude.query.AndItem in project vespa by vespa-engine.
the class QueryRewriteTestCase method assertMultipleAndNotIsCollapsed.
@Test
public void assertMultipleAndNotIsCollapsed() {
Query query = new Query();
NotItem not1 = new NotItem();
not1.addPositiveItem(new WordItem("a"));
not1.addNegativeItem(new WordItem("na1"));
not1.addNegativeItem(new WordItem("na2"));
NotItem not2 = new NotItem();
not2.addPositiveItem(new WordItem("b"));
not2.addNegativeItem(new WordItem("nb"));
AndItem and = new AndItem();
and.addItem(new WordItem("1"));
and.addItem(not1);
and.addItem(new WordItem("2"));
and.addItem(not2);
and.addItem(new WordItem("3"));
query.getModel().getQueryTree().setRoot(and);
QueryRewrite.optimizeAndNot(query);
assertTrue(query.getModel().getQueryTree().getRoot() instanceof NotItem);
NotItem n = (NotItem) query.getModel().getQueryTree().getRoot();
assertTrue(n.getPositiveItem() instanceof AndItem);
assertEquals(4, n.getItemCount());
AndItem a = (AndItem) n.getPositiveItem();
assertEquals(5, a.getItemCount());
assertEquals("na1", n.getItem(1).toString());
assertEquals("na2", n.getItem(2).toString());
assertEquals("nb", n.getItem(3).toString());
assertEquals("1", a.getItem(0).toString());
assertEquals("a", a.getItem(1).toString());
assertEquals("2", a.getItem(2).toString());
assertEquals("b", a.getItem(3).toString());
assertEquals("3", a.getItem(4).toString());
}
use of com.yahoo.prelude.query.AndItem in project vespa by vespa-engine.
the class QueryCanonicalizerMicroBenchmark method canonicalize.
private void canonicalize() {
AndItem and = new AndItem();
and.addItem(new WordItem("shoe", "prod"));
and.addItem(new WordItem("apparel & accessories", "tcnm"));
RankItem rank = new RankItem();
rank.addItem(and);
for (int i = 0; i < 25; i++) rank.addItem(new WordItem("word" + i, "normbrnd"));
QueryTree tree = new QueryTree(rank);
QueryCanonicalizer.canonicalize(tree);
}
use of com.yahoo.prelude.query.AndItem in project vespa by vespa-engine.
the class ParseTestCase method testShortcutsWeb.
/**
* Shortcut terms are represented as any other terms, but can be rewritten downstream.
* The information about added bangs is available from the origin as shown (do not use the weight to find this)
*/
@Test
public void testShortcutsWeb() {
tester.assertParsed("AND map new york", "map new york", Query.Type.WEB);
AndItem root = (AndItem) tester.assertParsed("AND map!150 new york", "map! new york", Query.Type.WEB);
assertEquals('!', ((WordItem) root.getItem(0)).getOrigin().charAfter(0));
root = (AndItem) tester.assertParsed("AND barack obama news!150", "barack obama news!", Query.Type.WEB);
assertEquals('!', ((WordItem) root.getItem(2)).getOrigin().charAfter(0));
}
use of com.yahoo.prelude.query.AndItem in project vespa by vespa-engine.
the class ParseTestCase method testPlusWordWebParsing1.
@Test
public void testPlusWordWebParsing1() {
Item root = tester.assertParsed("AND a b", "+a b", Query.Type.WEB);
assertTrue(((AndItem) root).getItem(0).isProtected());
assertFalse(((AndItem) root).getItem(1).isProtected());
}
Aggregations