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());
}
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();
}
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));
}
}
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));
}
}
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())));
}
Aggregations