Search in sources :

Example 26 with Execution

use of com.yahoo.search.searchchain.Execution in project vespa by vespa-engine.

the class RecallSearcherTestCase method assertQueryTree.

private static void assertQueryTree(String query, List<String> ranked, List<String> unranked) {
    RecallSearcher searcher = new RecallSearcher();
    Query obj = new Query(query);
    Result result = new Execution(searcher, Execution.Context.createContextStub(new IndexFacts())).search(obj);
    if (result.hits().getError() != null) {
        fail(result.hits().getError().toString());
    }
    List<String> myRanked = new ArrayList<>(ranked);
    List<String> myUnranked = new ArrayList<>(unranked);
    Stack<Item> stack = new Stack<>();
    stack.push(obj.getModel().getQueryTree().getRoot());
    while (!stack.isEmpty()) {
        Item item = stack.pop();
        if (item instanceof WordItem) {
            String word = ((WordItem) item).getWord();
            if (item.isRanked()) {
                int idx = myRanked.indexOf(word);
                if (idx < 0) {
                    fail("Term '" + word + "' not expected as ranked term.");
                }
                myRanked.remove(idx);
            } else {
                int idx = myUnranked.indexOf(word);
                if (idx < 0) {
                    fail("Term '" + word + "' not expected as unranked term.");
                }
                myUnranked.remove(idx);
            }
        }
        if (item instanceof CompositeItem) {
            CompositeItem lst = (CompositeItem) item;
            for (Iterator<?> it = lst.getItemIterator(); it.hasNext(); ) {
                stack.push((Item) it.next());
            }
        }
    }
    if (!myRanked.isEmpty()) {
        fail("Ranked terms " + myRanked + " not found.");
    }
    if (!myUnranked.isEmpty()) {
        fail("Unranked terms " + myUnranked + " not found.");
    }
}
Also used : CompositeItem(com.yahoo.prelude.query.CompositeItem) Query(com.yahoo.search.Query) IndexFacts(com.yahoo.prelude.IndexFacts) RecallSearcher(com.yahoo.prelude.querytransform.RecallSearcher) ArrayList(java.util.ArrayList) Result(com.yahoo.search.Result) Stack(java.util.Stack) CompositeItem(com.yahoo.prelude.query.CompositeItem) NullItem(com.yahoo.prelude.query.NullItem) Item(com.yahoo.prelude.query.Item) WordItem(com.yahoo.prelude.query.WordItem) Execution(com.yahoo.search.searchchain.Execution) WordItem(com.yahoo.prelude.query.WordItem)

Example 27 with Execution

use of com.yahoo.search.searchchain.Execution in project vespa by vespa-engine.

the class RecallSearcherTestCase method testDenyRankItems.

@Test
public void testDenyRankItems() {
    RecallSearcher searcher = new RecallSearcher();
    Query query = new Query("?recall=foo");
    Result result = new Execution(searcher, Execution.Context.createContextStub(new IndexFacts())).search(query);
    assertNotNull(result.hits().getError());
}
Also used : Execution(com.yahoo.search.searchchain.Execution) Query(com.yahoo.search.Query) IndexFacts(com.yahoo.prelude.IndexFacts) RecallSearcher(com.yahoo.prelude.querytransform.RecallSearcher) Result(com.yahoo.search.Result) Test(org.junit.Test)

Example 28 with Execution

use of com.yahoo.search.searchchain.Execution in project vespa by vespa-engine.

the class RecallSearcherTestCase method testIgnoreEmptyProperty.

@Test
public void testIgnoreEmptyProperty() {
    RecallSearcher searcher = new RecallSearcher();
    Query query = new Query();
    Result result = new Execution(searcher, Execution.Context.createContextStub()).search(query);
    assertNull(result.hits().getError());
    assertTrue(query.getModel().getQueryTree().getRoot() instanceof NullItem);
}
Also used : Execution(com.yahoo.search.searchchain.Execution) Query(com.yahoo.search.Query) RecallSearcher(com.yahoo.prelude.querytransform.RecallSearcher) NullItem(com.yahoo.prelude.query.NullItem) Result(com.yahoo.search.Result) Test(org.junit.Test)

Example 29 with Execution

use of com.yahoo.search.searchchain.Execution in project vespa by vespa-engine.

the class BlendingSearcherTestCase method testOnlyFirstBackend.

@Test
public void testOnlyFirstBackend() {
    BlendingSearcherWrapper searcher = setupFirstAndSecond();
    Query query = new Query("/search?query=banana&search=first");
    Result result = new Execution(searcher, Execution.Context.createContextStub()).search(query);
    assertEquals(1, result.getHitCount());
    assertEquals(200.0, result.hits().get(0).getRelevance().getScore(), delta);
}
Also used : Execution(com.yahoo.search.searchchain.Execution) Query(com.yahoo.search.Query) Result(com.yahoo.search.Result) Test(org.junit.Test)

Example 30 with Execution

use of com.yahoo.search.searchchain.Execution in project vespa by vespa-engine.

the class BlendingSearcherTestCase method testExistingAndNonExistingBackendCausesBothErrorAndResult.

@Test
public void testExistingAndNonExistingBackendCausesBothErrorAndResult() {
    BlendingSearcherWrapper searcher = setupFirstAndSecond();
    Query query = new Query("/search?query=banana&search=first,nonesuch,second");
    Result result = new Execution(searcher, Execution.Context.createContextStub(new IndexFacts())).search(query);
    assertEquals(3, result.getConcreteHitCount());
    assertEquals(300.0, result.hits().get(1).getRelevance().getScore(), delta);
    assertEquals(200.0, result.hits().get(2).getRelevance().getScore(), delta);
    assertEquals(100.0, result.hits().get(3).getRelevance().getScore(), delta);
    assertNotNull(result.hits().getError());
    ErrorMessage e = result.hits().getError();
    // TODO: Do not depend on sources order
    assertEquals("Could not resolve source ref 'nonesuch'. Valid source refs are first, second.", e.getDetailedMessage());
}
Also used : Execution(com.yahoo.search.searchchain.Execution) Query(com.yahoo.search.Query) IndexFacts(com.yahoo.prelude.IndexFacts) ErrorMessage(com.yahoo.search.result.ErrorMessage) Result(com.yahoo.search.Result) Test(org.junit.Test)

Aggregations

Execution (com.yahoo.search.searchchain.Execution)232 Query (com.yahoo.search.Query)184 Result (com.yahoo.search.Result)127 Test (org.junit.Test)123 Searcher (com.yahoo.search.Searcher)88 Chain (com.yahoo.component.chain.Chain)59 IndexFacts (com.yahoo.prelude.IndexFacts)34 Hit (com.yahoo.search.result.Hit)25 FeedContext (com.yahoo.feedapi.FeedContext)20 MessagePropertyProcessor (com.yahoo.feedapi.MessagePropertyProcessor)20 NullFeedMetric (com.yahoo.feedhandler.NullFeedMetric)20 ClusterList (com.yahoo.vespaclient.ClusterList)20 AndItem (com.yahoo.prelude.query.AndItem)18 WordItem (com.yahoo.prelude.query.WordItem)17 ComponentId (com.yahoo.component.ComponentId)13 GetDocumentReply (com.yahoo.documentapi.messagebus.protocol.GetDocumentReply)13 FastHit (com.yahoo.prelude.fastsearch.FastHit)13 FederationSearcher (com.yahoo.search.federation.FederationSearcher)13 ArrayList (java.util.ArrayList)12 CompositeItem (com.yahoo.prelude.query.CompositeItem)11