Search in sources :

Example 21 with SearchBuilder

use of com.yahoo.searchdefinition.SearchBuilder in project vespa by vespa-engine.

the class DocumentModelBuilderTestCase method testDocumentTypesWithDocumentField.

@Test
public void testDocumentTypesWithDocumentField() throws IOException, ParseException {
    SearchBuilder search = new SearchBuilder();
    search.importFile("src/test/configmodel/types/other_doc.sd");
    search.importFile("src/test/configmodel/types/type_with_doc_field.sd");
    search.build();
    DocumentModel model = search.getModel();
    DocumenttypesConfig.Builder documenttypesCfg = new DocumentTypes().produce(model, new DocumenttypesConfig.Builder());
    assertConfigFile("src/test/configmodel/types/documenttypes_with_doc_field.cfg", new DocumenttypesConfig(documenttypesCfg).toString());
}
Also used : DocumenttypesConfig(com.yahoo.document.DocumenttypesConfig) DocumentTypes(com.yahoo.vespa.configmodel.producers.DocumentTypes) SearchBuilder(com.yahoo.searchdefinition.SearchBuilder) Test(org.junit.Test)

Example 22 with SearchBuilder

use of com.yahoo.searchdefinition.SearchBuilder in project vespa by vespa-engine.

the class RankingExpressionTypeValidatorTestCase method importedFieldsAreAvailable.

@Test
public void importedFieldsAreAvailable() throws Exception {
    SearchBuilder builder = new SearchBuilder();
    builder.importString(joinLines("search parent {", "  document parent {", "    field a type tensor(x[],y[]) {", "      indexing: attribute", "    }", "  }", "}"));
    builder.importString(joinLines("search child {", "  document child { ", "    field ref type reference<parent> {", "indexing: attribute | summary", "    }", "  }", "  import field ref.a as imported_a {}", "  rank-profile my_rank_profile {", "    first-phase {", "      expression: sum(attribute(imported_a))", "    }", "  }", "}"));
    builder.build();
}
Also used : SearchBuilder(com.yahoo.searchdefinition.SearchBuilder) Test(org.junit.Test)

Example 23 with SearchBuilder

use of com.yahoo.searchdefinition.SearchBuilder in project vespa by vespa-engine.

the class RankingExpressionTypeValidatorTestCase method tensorSecondPhaseMustProduceDouble.

@Test
public void tensorSecondPhaseMustProduceDouble() throws Exception {
    try {
        SearchBuilder builder = new SearchBuilder();
        builder.importString(joinLines("search test {", "  document test { ", "    field a type tensor(x[],y[]) {", "      indexing: attribute", "    }", "  }", "  rank-profile my_rank_profile {", "    first-phase {", "      expression: sum(attribute(a))", "    }", "    second-phase {", "      expression: attribute(a)", "    }", "  }", "}"));
        builder.build();
        fail("Expected exception");
    } catch (IllegalArgumentException expected) {
        assertEquals("In search definition 'test', rank profile 'my_rank_profile': The second-phase expression must produce a double (a tensor with no dimensions), but produces tensor(x[],y[])", Exceptions.toMessageString(expected));
    }
}
Also used : SearchBuilder(com.yahoo.searchdefinition.SearchBuilder) Test(org.junit.Test)

Example 24 with SearchBuilder

use of com.yahoo.searchdefinition.SearchBuilder in project vespa by vespa-engine.

the class RankingExpressionTypeValidatorTestCase method tensorConditionsMustHaveTypeCompatibleBranches.

@Test
public void tensorConditionsMustHaveTypeCompatibleBranches() throws Exception {
    try {
        SearchBuilder searchBuilder = new SearchBuilder();
        searchBuilder.importString(joinLines("search test {", "  document test { ", "    field a type tensor(x[],y[]) {", "      indexing: attribute", "    }", "    field b type tensor(z[10]) {", "      indexing: attribute", "    }", "  }", "  rank-profile my_rank_profile {", "    first-phase {", "      expression: sum(if(1>0, attribute(a), attribute(b)))", "    }", "  }", "}"));
        searchBuilder.build();
        fail("Expected exception");
    } catch (IllegalArgumentException expected) {
        assertEquals("In search definition 'test', rank profile 'my_rank_profile': The first-phase expression is invalid: An if expression must produce compatible types in both alternatives, but the 'true' type is tensor(x[],y[]) while the 'false' type is tensor(z[10])", Exceptions.toMessageString(expected));
    }
}
Also used : SearchBuilder(com.yahoo.searchdefinition.SearchBuilder) Test(org.junit.Test)

Example 25 with SearchBuilder

use of com.yahoo.searchdefinition.SearchBuilder in project vespa by vespa-engine.

the class RankingExpressionTypeValidatorTestCase method testMacroInvocationTypes.

@Test
public void testMacroInvocationTypes() throws Exception {
    RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
    SearchBuilder builder = new SearchBuilder(rankProfileRegistry);
    builder.importString(joinLines("search test {", "  document test { ", "    field a type tensor(x[],y[]) {", "      indexing: attribute", "    }", "    field b type tensor(z[10]) {", "      indexing: attribute", "    }", "  }", "  rank-profile my_rank_profile {", "    macro macro1(attribute_to_use) {", "      expression: attribute(attribute_to_use)", "    }", "    summary-features {", "      macro1(a)", "      macro1(b)", "    }", "  }", "}"));
    builder.build();
    RankProfile profile = builder.getRankProfileRegistry().getRankProfile(builder.getSearch(), "my_rank_profile");
    assertEquals(TensorType.fromSpec("tensor(x[],y[])"), summaryFeatures(profile).get("macro1(a)").type(profile.typeContext(builder.getQueryProfileRegistry())));
    assertEquals(TensorType.fromSpec("tensor(z[10])"), summaryFeatures(profile).get("macro1(b)").type(profile.typeContext(builder.getQueryProfileRegistry())));
}
Also used : RankProfileRegistry(com.yahoo.searchdefinition.RankProfileRegistry) SearchBuilder(com.yahoo.searchdefinition.SearchBuilder) RankProfile(com.yahoo.searchdefinition.RankProfile) Test(org.junit.Test)

Aggregations

SearchBuilder (com.yahoo.searchdefinition.SearchBuilder)36 Test (org.junit.Test)24 Search (com.yahoo.searchdefinition.Search)6 UnprocessingSearchBuilder (com.yahoo.searchdefinition.UnprocessingSearchBuilder)6 RankProfileRegistry (com.yahoo.searchdefinition.RankProfileRegistry)4 IOException (java.io.IOException)4 QueryProfileRegistry (com.yahoo.search.query.profile.QueryProfileRegistry)3 RankProfile (com.yahoo.searchdefinition.RankProfile)3 ParseException (com.yahoo.searchdefinition.parser.ParseException)3 File (java.io.File)3 DocumentmanagerConfig (com.yahoo.document.config.DocumentmanagerConfig)2 SDDocumentType (com.yahoo.searchdefinition.document.SDDocumentType)2 DocumentManager (com.yahoo.vespa.configmodel.producers.DocumentManager)2 Pair (com.yahoo.collections.Pair)1 BaseDeployLogger (com.yahoo.config.model.application.provider.BaseDeployLogger)1 DocumenttypesConfig (com.yahoo.document.DocumenttypesConfig)1 AnnotationType (com.yahoo.document.annotation.AnnotationType)1 NewDocumentType (com.yahoo.documentmodel.NewDocumentType)1 DocumentGraphValidator (com.yahoo.searchdefinition.DocumentGraphValidator)1 AttributeFields (com.yahoo.searchdefinition.derived.AttributeFields)1