Search in sources :

Example 61 with QueryProfile

use of com.yahoo.search.query.profile.QueryProfile in project vespa by vespa-engine.

the class QueryProfileTypeTestCase method testAnonTypedOverridingOfQueryProfileReferencesNonStrictThroughQueryNestedInAnUntypedProfile.

/**
 * Same as previous test but using the untyped myQueryProfile reference instead of the typed myUserQueryProfile
 */
public void testAnonTypedOverridingOfQueryProfileReferencesNonStrictThroughQueryNestedInAnUntypedProfile() {
    QueryProfile topMap = new QueryProfile("topMap");
    QueryProfile subMap = new QueryProfile("topSubMap");
    topMap.set("subMap", subMap, registry);
    QueryProfile test = new QueryProfile("test");
    test.setType(type);
    subMap.set("typeProfile", test, registry);
    QueryProfile myUser = new QueryProfile("myUser");
    myUser.setType(user);
    myUser.set("myUserString", "userValue1", registry);
    myUser.set("myUserInteger", 442, registry);
    test.set("myQueryProfile", myUser, registry);
    QueryProfile newUser = new QueryProfile("newUser");
    newUser.setType(user);
    newUser.set("myUserString", "newUserValue1", registry);
    newUser.set("myUserInteger", 845, registry);
    registry.register(topMap);
    registry.register(subMap);
    registry.register(test);
    registry.register(myUser);
    registry.register(newUser);
    CompiledQueryProfileRegistry cRegistry = registry.compile();
    Query query = new Query(HttpRequest.createTestRequest("?subMap.typeProfile.myQueryProfile=newUser", com.yahoo.jdisc.http.HttpRequest.Method.GET), cRegistry.getComponent("topMap"));
    assertEquals(0, query.errors().size());
    assertEquals("newUserValue1", query.properties().get("subMap.typeProfile.myQueryProfile.myUserString"));
    assertEquals(845, query.properties().get("subMap.typeProfile.myQueryProfile.myUserInteger"));
}
Also used : CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) QueryProfile(com.yahoo.search.query.profile.QueryProfile) CompiledQueryProfileRegistry(com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry) Query(com.yahoo.search.Query)

Example 62 with QueryProfile

use of com.yahoo.search.query.profile.QueryProfile in project vespa by vespa-engine.

the class QueryProfileTypeTestCase method testTypedAssignmentOfQueryProfilesNonStrict.

/**
 * Tests assigning a subprofile directly
 */
public void testTypedAssignmentOfQueryProfilesNonStrict() {
    QueryProfile profile = new QueryProfile("test");
    profile.setType(type);
    QueryProfile map1 = new QueryProfile("myMap1");
    map1.set("key1", "value1", registry);
    QueryProfile map2 = new QueryProfile("myMap2");
    map2.set("key2", "value2", registry);
    QueryProfile myUser = new QueryProfile("myUser");
    myUser.setType(user);
    myUser.set("myUserString", "userValue1", registry);
    myUser.set("myUserInteger", 442, registry);
    assertWrongType(profile, "reference to a query profile", "myQueryProfile", "aString");
    profile.set("myQueryProfile", map1, registry);
    // Legal because this is not strict
    profile.set("someMap", map2, registry);
    assertWrongType(profile, "reference to a query profile of type 'user'", "myUserQueryProfile", map1);
    profile.set("myUserQueryProfile", myUser, registry);
    CompiledQueryProfile cprofile = profile.compile(null);
    assertEquals("value1", cprofile.get("myQueryProfile.key1"));
    assertEquals("value2", cprofile.get("someMap.key2"));
    assertEquals("userValue1", cprofile.get("myUserQueryProfile.myUserString"));
    assertEquals(442, cprofile.get("myUserQueryProfile.myUserInteger"));
}
Also used : CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) QueryProfile(com.yahoo.search.query.profile.QueryProfile) CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile)

Example 63 with QueryProfile

use of com.yahoo.search.query.profile.QueryProfile in project vespa by vespa-engine.

the class QueryProfileTypeTestCase method testTypedOverridingOfQueryProfileReferencesNonStrictThroughQuery.

/**
 * Tests overriding a subprofile as an id string through the query.
 * Here there exists a user profile already, and then a new one is overwritten
 */
public void testTypedOverridingOfQueryProfileReferencesNonStrictThroughQuery() {
    QueryProfile profile = new QueryProfile("test");
    profile.setType(type);
    QueryProfile myUser = new QueryProfile("myUser");
    myUser.setType(user);
    myUser.set("myUserString", "userValue1", registry);
    myUser.set("myUserInteger", 442, registry);
    QueryProfile newUser = new QueryProfile("newUser");
    newUser.setType(user);
    newUser.set("myUserString", "newUserValue1", registry);
    newUser.set("myUserInteger", 845, registry);
    QueryProfileRegistry registry = new QueryProfileRegistry();
    registry.register(profile);
    registry.register(myUser);
    registry.register(newUser);
    CompiledQueryProfileRegistry cRegistry = registry.compile();
    CompiledQueryProfile cprofile = cRegistry.getComponent("test");
    Query query = new Query(HttpRequest.createTestRequest("?myUserQueryProfile=newUser", com.yahoo.jdisc.http.HttpRequest.Method.GET), cprofile);
    assertEquals(0, query.errors().size());
    assertEquals("newUserValue1", query.properties().get("myUserQueryProfile.myUserString"));
    assertEquals(845, query.properties().get("myUserQueryProfile.myUserInteger"));
}
Also used : CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) QueryProfile(com.yahoo.search.query.profile.QueryProfile) CompiledQueryProfileRegistry(com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry) CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) Query(com.yahoo.search.Query) QueryProfileRegistry(com.yahoo.search.query.profile.QueryProfileRegistry) CompiledQueryProfileRegistry(com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)

Example 64 with QueryProfile

use of com.yahoo.search.query.profile.QueryProfile in project vespa by vespa-engine.

the class QueryProfileTypeTestCase method testTypedAssignmentOfQueryProfileReferencesNonStrictThroughQuery.

/**
 * Tests overriding a subprofile as an id string through the query.
 * Here no user profile is set before it is assigned in the query
 */
public void testTypedAssignmentOfQueryProfileReferencesNonStrictThroughQuery() {
    QueryProfile profile = new QueryProfile("test");
    profile.setType(type);
    QueryProfile newUser = new QueryProfile("newUser");
    newUser.setType(user);
    newUser.set("myUserString", "newUserValue1", registry);
    newUser.set("myUserInteger", 845, registry);
    registry.register(profile);
    registry.register(newUser);
    CompiledQueryProfileRegistry cRegistry = registry.compile();
    CompiledQueryProfile cprofile = cRegistry.getComponent("test");
    Query query = new Query(HttpRequest.createTestRequest("?myUserQueryProfile=newUser", com.yahoo.jdisc.http.HttpRequest.Method.GET), cprofile);
    assertEquals(0, query.errors().size());
    assertEquals("newUserValue1", query.properties().get("myUserQueryProfile.myUserString"));
    assertEquals(845, query.properties().get("myUserQueryProfile.myUserInteger"));
}
Also used : CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) QueryProfile(com.yahoo.search.query.profile.QueryProfile) CompiledQueryProfileRegistry(com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry) CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) Query(com.yahoo.search.Query)

Example 65 with QueryProfile

use of com.yahoo.search.query.profile.QueryProfile in project vespa by vespa-engine.

the class QueryProfileTypeTestCase method testTypedOfPrimitivesAssignmentNonStrict.

public void testTypedOfPrimitivesAssignmentNonStrict() {
    QueryProfile profile = new QueryProfile("test");
    profile.setType(type);
    registry.register(profile);
    profile.set("myString", "anyValue", registry);
    // legal because this is not strict
    profile.set("nontypedString", "anyValueToo", registry);
    assertWrongType(profile, "integer", "myInteger", "notInteger");
    assertWrongType(profile, "integer", "myInteger", "1.5");
    profile.set("myInteger", 3, registry);
    assertWrongType(profile, "long", "myLong", "notLong");
    assertWrongType(profile, "long", "myLong", "1.5");
    profile.set("myLong", 4000000000000l, registry);
    assertWrongType(profile, "float", "myFloat", "notFloat");
    profile.set("myFloat", 3.14f, registry);
    assertWrongType(profile, "double", "myDouble", "notDouble");
    profile.set("myDouble", 2.18, registry);
    profile.set("myBoolean", true, registry);
    String tensorString1 = "{{a:a1, b:b1}:1.0, {a:a2, b:b1}:2.0}}";
    profile.set("ranking.features.query(myTensor1)", tensorString1, registry);
    String tensorString2 = "{{x:0, y:0}:1.0, {x:0, y:1}:2.0}}";
    profile.set("ranking.features.query(myTensor2)", tensorString2, registry);
    String tensorString3 = "{{x:x1}:1.0, {x:x2}:2.0}}";
    profile.set("ranking.features.query(myTensor3)", tensorString3, registry);
    // TODO
    profile.set("myQuery", "...", registry);
    profile.set("myQueryProfile.anyString", "value1", registry);
    profile.set("myQueryProfile.anyDouble", 8.76, registry);
    profile.set("myUserQueryProfile.myUserString", "value2", registry);
    // Legal because user is not strict
    profile.set("myUserQueryProfile.anyString", "value3", registry);
    assertWrongType(profile, "integer", "myUserQueryProfile.myUserInteger", "notInteger");
    // Set using alias
    profile.set("myUserQueryProfile.uint", 1337, registry);
    // Legal because user is not strict
    profile.set("myUserQueryProfile.anyDouble", 9.13, registry);
    CompiledQueryProfileRegistry cRegistry = registry.compile();
    QueryProfileProperties properties = new QueryProfileProperties(cRegistry.findQueryProfile("test"));
    assertEquals("anyValue", properties.get("myString"));
    assertEquals("anyValueToo", properties.get("nontypedString"));
    assertEquals(3, properties.get("myInteger"));
    assertEquals(3, properties.get("Int"));
    assertEquals(4000000000000l, properties.get("myLong"));
    assertEquals(3.14f, properties.get("myFloat"));
    assertEquals(2.18, properties.get("myDouble"));
    assertEquals(true, properties.get("myBoolean"));
    assertEquals(Tensor.from(tensorString1), properties.get("ranking.features.query(myTensor1)"));
    assertEquals(Tensor.from("tensor(x[2],y[2])", tensorString2), properties.get("ranking.features.query(myTensor2)"));
    assertEquals(Tensor.from("tensor(x{})", tensorString3), properties.get("ranking.features.query(myTensor3)"));
    // TODO: assertEquals(..., cprofile.get("myQuery"));
    assertEquals("value1", properties.get("myQueryProfile.anyString"));
    assertEquals("value1", properties.get("QP.anyString"));
    assertEquals(8.76, properties.get("myQueryProfile.anyDouble"));
    assertEquals(8.76, properties.get("qp.anyDouble"));
    assertEquals("value2", properties.get("myUserQueryProfile.myUserString"));
    assertEquals("value3", properties.get("myUserQueryProfile.anyString"));
    assertEquals(1337, properties.get("myUserQueryProfile.myUserInteger"));
    assertEquals(1337, properties.get("myUserQueryProfile.uint"));
    assertEquals(9.13, properties.get("myUserQueryProfile.anyDouble"));
    assertNull(properties.get("nonExisting"));
    properties.set("INt", 51);
    assertEquals(51, properties.get("InT"));
    assertEquals(51, properties.get("myInteger"));
}
Also used : CompiledQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile) QueryProfile(com.yahoo.search.query.profile.QueryProfile) CompiledQueryProfileRegistry(com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) QueryProfileProperties(com.yahoo.search.query.profile.QueryProfileProperties)

Aggregations

QueryProfile (com.yahoo.search.query.profile.QueryProfile)161 CompiledQueryProfile (com.yahoo.search.query.profile.compiled.CompiledQueryProfile)92 Query (com.yahoo.search.Query)63 BackedOverridableQueryProfile (com.yahoo.search.query.profile.BackedOverridableQueryProfile)35 CompiledQueryProfileRegistry (com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)28 Test (org.junit.Test)26 QueryProfileRegistry (com.yahoo.search.query.profile.QueryProfileRegistry)24 QueryProfileProperties (com.yahoo.search.query.profile.QueryProfileProperties)21 QueryProfileType (com.yahoo.search.query.profile.types.QueryProfileType)12 Properties (com.yahoo.search.query.Properties)8 FieldDescription (com.yahoo.search.query.profile.types.FieldDescription)5 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)5 SubstituteString (com.yahoo.search.query.profile.SubstituteString)4 QueryProfilesConfig (com.yahoo.search.query.profile.config.QueryProfilesConfig)4 Element (org.w3c.dom.Element)4 QueryException (com.yahoo.prelude.query.QueryException)3 Properties (com.yahoo.processing.request.Properties)3 QueryProfileXMLReader (com.yahoo.search.query.profile.config.QueryProfileXMLReader)3 QueryProfiles (com.yahoo.vespa.model.container.search.QueryProfiles)3 ComponentSpecification (com.yahoo.component.ComponentSpecification)2