Search in sources :

Example 36 with Query

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

the class PageWithBlendingTestCase method testExecution.

@Test
public void testExecution() {
    // Create the page template
    Choice page = Choice.createSingleton(importPage("PageWithBlending.xml"));
    // Create a federated result
    Query query = new Query();
    Result result = new Result(query);
    result.hits().add(createHits("news", 2));
    result.hits().add(createHits("htmlSource", 1));
    // Resolve (noop here)
    Resolver resolver = new DeterministicResolver();
    Resolution resolution = resolver.resolve(page, query, result);
    // Execute
    Organizer organizer = new Organizer();
    organizer.organize(page, resolution, result);
    // Check rendering
    assertRendered(result, "PageWithBlendingResult.xml", new PageTemplateSet());
}
Also used : Choice(com.yahoo.search.pagetemplates.model.Choice) Query(com.yahoo.search.Query) Resolver(com.yahoo.search.pagetemplates.engine.Resolver) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) Organizer(com.yahoo.search.pagetemplates.engine.Organizer) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) PageTemplateSet(com.yahoo.prelude.templates.PageTemplateSet) Result(com.yahoo.search.Result) Resolution(com.yahoo.search.pagetemplates.engine.Resolution) Test(org.junit.Test)

Example 37 with Query

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

the class SourceChoiceTestCase method testExecution.

@Test
public void testExecution() {
    // Create the page template
    Choice page = Choice.createSingleton(importPage("SourceChoice.xml"));
    // Create a federated result
    Query query = new Query();
    Result result = new Result(query);
    result.hits().add(createHits("web", 3));
    result.hits().add(createHits("news", 3));
    result.hits().add(createHits("blog", 3));
    // Resolve (noop here)
    Resolver resolver = new DeterministicResolver();
    Resolution resolution = resolver.resolve(page, query, result);
    // Execute
    Organizer organizer = new Organizer();
    organizer.organize(page, resolution, result);
    // Check rendering
    assertRendered(result, "SourceChoiceResult.xml", new PageTemplateSet(), true);
}
Also used : Choice(com.yahoo.search.pagetemplates.model.Choice) Query(com.yahoo.search.Query) Resolver(com.yahoo.search.pagetemplates.engine.Resolver) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) Organizer(com.yahoo.search.pagetemplates.engine.Organizer) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) PageTemplateSet(com.yahoo.prelude.templates.PageTemplateSet) Result(com.yahoo.search.Result) Resolution(com.yahoo.search.pagetemplates.engine.Resolution) Test(org.junit.Test)

Example 38 with Query

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

the class PageTemplateSearcherTestCase method testSearcher.

public void testSearcher() {
    PageTemplateSearcher s = new PageTemplateSearcher(createPageTemplateRegistry(), new FirstChoiceResolver());
    Chain<Searcher> chain = new Chain<>(s, new MockFederator());
    {
        // No template specified, should use default
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(new Query("?query=foo&page.resolver=native.deterministic"));
        assertSources("source1 source2", result);
    }
    {
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(new Query("?query=foo&page.id=oneSource&page.resolver=native.deterministic"));
        assertSources("source1", result);
    }
    {
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(new Query("?query=foo&page.id=twoSources&model.sources=source1&page.resolver=native.deterministic"));
        assertSources("source1", result);
    }
    {
        Query query = new Query("?query=foo&page.resolver=native.deterministic");
        addIntentModelSpecifyingSource3(query);
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source1 source2", result);
    }
    {
        Query query = new Query("?query=foo&page.id=twoSourcesAndAny&page.resolver=native.deterministic");
        addIntentModelSpecifyingSource3(query);
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source1 source2 source3", result);
    }
    {
        Query query = new Query("?query=foo&page.id=anySource&page.resolver=native.deterministic");
        addIntentModelSpecifyingSource3(query);
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source3", result);
    }
    {
        Query query = new Query("?query=foo&page.id=anySource&page.resolver=native.deterministic");
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertTrue(query.getModel().getSources().isEmpty());
        assertNotNull(result.hits().get("source1"));
        assertNotNull(result.hits().get("source2"));
        assertNotNull(result.hits().get("source3"));
    }
    {
        Query query = new Query("?query=foo&page.id=choiceOfSources&page.resolver=native.deterministic");
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source1 source2", "source2", result);
    }
    {
        Query query = new Query("?query=foo&page.id=choiceOfSources&page.resolver=test.firstChoice");
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source1 source2", "source1", result);
    }
    {
        // Specifying two templates, should pick the last
        Query query = new Query("?query=foo&page.id=threeSources+oneSource&page.resolver=native.deterministic");
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source1 source2 source3", "source1", result);
    }
    {
        // Specifying two templates as a list, should override the page.id setting
        Query query = new Query("?query=foo&page.id=anySource&page.resolver=native.deterministic");
        query.properties().set("page.idList", Arrays.asList("oneSource", "threeSources"));
        Result result = new Execution(chain, Execution.Context.createContextStub()).search(query);
        assertSources("source1 source2 source3", "source1 source2 source3", result);
    }
    {
        try {
            Query query = new Query("?query=foo&page.id=oneSource+choiceOfSources&page.resolver=noneSuch");
            new Execution(chain, Execution.Context.createContextStub()).search(query);
            fail("Expected exception");
        } catch (IllegalArgumentException e) {
            assertEquals("No page template resolver 'noneSuch'", e.getMessage());
        }
    }
}
Also used : Chain(com.yahoo.component.chain.Chain) Execution(com.yahoo.search.searchchain.Execution) PageTemplateSearcher(com.yahoo.search.pagetemplates.PageTemplateSearcher) Query(com.yahoo.search.Query) Searcher(com.yahoo.search.Searcher) PageTemplateSearcher(com.yahoo.search.pagetemplates.PageTemplateSearcher) Result(com.yahoo.search.Result)

Example 39 with Query

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

the class PageTestCase method testExecution.

@Test
public void testExecution() {
    // Create the page template
    Choice page = Choice.createSingleton(importPage("Page.xml"));
    // Create a federated result
    Query query = new Query();
    Result result = new Result(query);
    result.hits().add(createHits("news", 2));
    result.hits().add(createHits("htmlSource", 1));
    // Resolve (noop here)
    Resolver resolver = new DeterministicResolver();
    Resolution resolution = resolver.resolve(page, query, result);
    // Execute
    Organizer organizer = new Organizer();
    organizer.organize(page, resolution, result);
    // Check rendering
    assertRendered(result, "PageResult.xml", new PageTemplateSet());
}
Also used : Choice(com.yahoo.search.pagetemplates.model.Choice) Query(com.yahoo.search.Query) Resolver(com.yahoo.search.pagetemplates.engine.Resolver) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) Organizer(com.yahoo.search.pagetemplates.engine.Organizer) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) PageTemplateSet(com.yahoo.prelude.templates.PageTemplateSet) Result(com.yahoo.search.Result) Resolution(com.yahoo.search.pagetemplates.engine.Resolution) Test(org.junit.Test)

Example 40 with Query

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

the class PageWithSourceRendererTestCase method testExecution.

@Test
public void testExecution() {
    // Create the page template
    Choice page = Choice.createSingleton(importPage("PageWithSourceRenderer.xml"));
    // Create a federated result
    Query query = new Query();
    Result result = new Result(query);
    result.hits().add(createHits("news", 2));
    result.hits().add(createHits("htmlSource", 1));
    // Resolve
    Resolver resolver = new DeterministicResolver();
    Resolution resolution = resolver.resolve(page, query, result);
    // Execute
    Organizer organizer = new Organizer();
    organizer.organize(page, resolution, result);
    // Check rendering
    assertRendered(result, "PageWithSourceRendererResult.xml", new PageTemplateSet());
}
Also used : Choice(com.yahoo.search.pagetemplates.model.Choice) Query(com.yahoo.search.Query) Resolver(com.yahoo.search.pagetemplates.engine.Resolver) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) Organizer(com.yahoo.search.pagetemplates.engine.Organizer) DeterministicResolver(com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver) PageTemplateSet(com.yahoo.prelude.templates.PageTemplateSet) Result(com.yahoo.search.Result) Resolution(com.yahoo.search.pagetemplates.engine.Resolution) Test(org.junit.Test)

Aggregations

Query (com.yahoo.search.Query)689 Test (org.junit.Test)415 Result (com.yahoo.search.Result)229 Execution (com.yahoo.search.searchchain.Execution)184 Searcher (com.yahoo.search.Searcher)82 QueryProfile (com.yahoo.search.query.profile.QueryProfile)63 Hit (com.yahoo.search.result.Hit)52 Chain (com.yahoo.component.chain.Chain)47 IndexFacts (com.yahoo.prelude.IndexFacts)44 CompiledQueryProfileRegistry (com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)37 AndItem (com.yahoo.prelude.query.AndItem)33 WordItem (com.yahoo.prelude.query.WordItem)33 FastHit (com.yahoo.prelude.fastsearch.FastHit)31 CompiledQueryProfile (com.yahoo.search.query.profile.compiled.CompiledQueryProfile)27 HitGroup (com.yahoo.search.result.HitGroup)24 Item (com.yahoo.prelude.query.Item)21 HashMap (java.util.HashMap)20 CacheKey (com.yahoo.prelude.fastsearch.CacheKey)18 GroupingRequest (com.yahoo.search.grouping.GroupingRequest)18 ArrayList (java.util.ArrayList)18