use of com.yahoo.prelude.query.Item in project vespa by vespa-engine.
the class CollapsePhraseSearcherTestCase method transformQuery.
private String transformQuery(Item queryTree) {
CollapsePhraseSearcher searcher = new CollapsePhraseSearcher();
Query query = new Query();
query.getModel().getQueryTree().setRoot(queryTree);
new Execution(searcher, Execution.Context.createContextStub()).search(query);
Item newRoot = query.getModel().getQueryTree().getRoot();
if (newRoot != null)
return newRoot.toString();
else
return null;
}
use of com.yahoo.prelude.query.Item in project vespa by vespa-engine.
the class ModelTestCase method testSetQuery.
public void testSetQuery() {
Query q1 = new Query("?query=test1");
Item r1 = q1.getModel().getQueryTree();
q1.properties().set("query", "test2");
// Force reparse
q1.getModel().setQueryString(q1.getModel().getQueryString());
assertNotSame(r1, q1.getModel().getQueryTree());
q1.properties().set("query", "test1");
// Force reparse
q1.getModel().setQueryString(q1.getModel().getQueryString());
assertEquals(r1, q1.getModel().getQueryTree());
}
use of com.yahoo.prelude.query.Item in project vespa by vespa-engine.
the class RangeQueryOptimizerTestCase method testRangeOptimizingCarriesOverItemAttributesWhenOptimized.
@Test
public void testRangeOptimizingCarriesOverItemAttributesWhenOptimized() {
Query query = new Query();
AndItem root = new AndItem();
query.getModel().getQueryTree().setRoot(root);
Item intItem1 = new IntItem(">" + 15, "s");
intItem1.setFilter(true);
intItem1.setRanked(false);
intItem1.setWeight(500);
root.addItem(intItem1);
Item intItem2 = new IntItem("<" + 30, "s");
intItem2.setFilter(true);
intItem2.setRanked(false);
intItem2.setWeight(500);
root.addItem(intItem2);
assertOptimized("Optimized", "AND |s:<15;30>!500", query);
IntItem transformedIntItem = (IntItem) ((AndItem) query.getModel().getQueryTree().getRoot()).getItem(0);
assertTrue("Filter was carried over", transformedIntItem.isFilter());
assertFalse("Ranked was carried over", transformedIntItem.isRanked());
assertEquals("Weight was carried over", 500, transformedIntItem.getWeight());
}
use of com.yahoo.prelude.query.Item in project vespa by vespa-engine.
the class RangeQueryOptimizerTestCase method testNoRangeOptimizingWhenAttributesAreIncompatible.
@Test
public void testNoRangeOptimizingWhenAttributesAreIncompatible() {
Query query = new Query();
AndItem root = new AndItem();
query.getModel().getQueryTree().setRoot(root);
Item intItem1 = new IntItem(">" + 15, "s");
intItem1.setFilter(true);
intItem1.setRanked(false);
intItem1.setWeight(500);
root.addItem(intItem1);
Item intItem2 = new IntItem("<" + 30, "s");
// Disagrees with item1
intItem2.setFilter(false);
intItem2.setRanked(false);
intItem2.setWeight(500);
root.addItem(intItem2);
assertOptimized("Not optimized", "AND |s:<15;]!500 s:[;30>!500", query);
IntItem transformedIntItem1 = (IntItem) ((AndItem) query.getModel().getQueryTree().getRoot()).getItem(0);
assertTrue("Filter was carried over", transformedIntItem1.isFilter());
assertFalse("Ranked was carried over", transformedIntItem1.isRanked());
assertEquals("Weight was carried over", 500, transformedIntItem1.getWeight());
IntItem transformedIntItem2 = (IntItem) ((AndItem) query.getModel().getQueryTree().getRoot()).getItem(1);
assertFalse("Filter was carried over", transformedIntItem2.isFilter());
assertFalse("Ranked was carried over", transformedIntItem2.isRanked());
assertEquals("Weight was carried over", 500, transformedIntItem2.getWeight());
}
use of com.yahoo.prelude.query.Item in project vespa by vespa-engine.
the class RangeQueryOptimizerTestCase method testDifferentCompatibleRangesPerFieldAreOptimizedSeparately.
@Test
public void testDifferentCompatibleRangesPerFieldAreOptimizedSeparately() {
Query query = new Query();
AndItem root = new AndItem();
query.getModel().getQueryTree().setRoot(root);
// Two internally compatible items
Item intItem1 = new IntItem(">" + 15, "s");
intItem1.setRanked(false);
root.addItem(intItem1);
Item intItem2 = new IntItem("<" + 30, "s");
intItem2.setRanked(false);
root.addItem(intItem2);
// Two other internally compatible items incompatible with the above
Item intItem3 = new IntItem(">" + 100, "s");
root.addItem(intItem3);
Item intItem4 = new IntItem("<" + 150, "s");
root.addItem(intItem4);
assertOptimized("Optimized", "AND s:<15;30> s:<100;150>", query);
IntItem transformedIntItem1 = (IntItem) ((AndItem) query.getModel().getQueryTree().getRoot()).getItem(0);
assertFalse("Ranked was carried over", transformedIntItem1.isRanked());
IntItem transformedIntItem2 = (IntItem) ((AndItem) query.getModel().getQueryTree().getRoot()).getItem(1);
assertTrue("Ranked was carried over", transformedIntItem2.isRanked());
}
Aggregations