Search in sources :

Example 81 with Item

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;
}
Also used : PhraseItem(com.yahoo.prelude.query.PhraseItem) CompositeItem(com.yahoo.prelude.query.CompositeItem) Item(com.yahoo.prelude.query.Item) AndItem(com.yahoo.prelude.query.AndItem) WordItem(com.yahoo.prelude.query.WordItem) Execution(com.yahoo.search.searchchain.Execution) Query(com.yahoo.search.Query) CollapsePhraseSearcher(com.yahoo.prelude.querytransform.CollapsePhraseSearcher)

Example 82 with Item

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());
}
Also used : Item(com.yahoo.prelude.query.Item) Query(com.yahoo.search.Query)

Example 83 with Item

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());
}
Also used : IntItem(com.yahoo.prelude.query.IntItem) Item(com.yahoo.prelude.query.Item) AndItem(com.yahoo.prelude.query.AndItem) IntItem(com.yahoo.prelude.query.IntItem) Query(com.yahoo.search.Query) AndItem(com.yahoo.prelude.query.AndItem) Test(org.junit.Test)

Example 84 with Item

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());
}
Also used : IntItem(com.yahoo.prelude.query.IntItem) Item(com.yahoo.prelude.query.Item) AndItem(com.yahoo.prelude.query.AndItem) IntItem(com.yahoo.prelude.query.IntItem) Query(com.yahoo.search.Query) AndItem(com.yahoo.prelude.query.AndItem) Test(org.junit.Test)

Example 85 with Item

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());
}
Also used : IntItem(com.yahoo.prelude.query.IntItem) Item(com.yahoo.prelude.query.Item) AndItem(com.yahoo.prelude.query.AndItem) IntItem(com.yahoo.prelude.query.IntItem) Query(com.yahoo.search.Query) AndItem(com.yahoo.prelude.query.AndItem) Test(org.junit.Test)

Aggregations

Item (com.yahoo.prelude.query.Item)116 AndItem (com.yahoo.prelude.query.AndItem)85 CompositeItem (com.yahoo.prelude.query.CompositeItem)82 WordItem (com.yahoo.prelude.query.WordItem)73 PhraseItem (com.yahoo.prelude.query.PhraseItem)66 NotItem (com.yahoo.prelude.query.NotItem)62 RankItem (com.yahoo.prelude.query.RankItem)60 SubstringItem (com.yahoo.prelude.query.SubstringItem)60 Test (org.junit.Test)58 OrItem (com.yahoo.prelude.query.OrItem)57 PrefixItem (com.yahoo.prelude.query.PrefixItem)53 SuffixItem (com.yahoo.prelude.query.SuffixItem)53 IntItem (com.yahoo.prelude.query.IntItem)52 PhraseSegmentItem (com.yahoo.prelude.query.PhraseSegmentItem)51 NullItem (com.yahoo.prelude.query.NullItem)24 Query (com.yahoo.search.Query)22 EquivItem (com.yahoo.prelude.query.EquivItem)14 NearItem (com.yahoo.prelude.query.NearItem)14 ExactStringItem (com.yahoo.prelude.query.ExactStringItem)12 IndexedItem (com.yahoo.prelude.query.IndexedItem)12