diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-08-23 13:45:05 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-08-23 13:45:05 +0000 |
commit | ca29ea2ba755f115aca39245d9e8dfeb0dfd4d43 (patch) | |
tree | c947c4a096191489b248f282ee2a9bece53dfa81 /container-search | |
parent | f5d7c59226176a53793ea392debd399197f55689 (diff) |
let values under "input" through as unparsed strings
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java | 2 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java b/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java index c931c6a356f..45a0c606584 100644 --- a/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java +++ b/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java @@ -77,7 +77,7 @@ class Json2SingleLevelMap { } else if (token == JsonToken.START_ARRAY) { map.put(fieldName, skipChildren(parser, buf)); } else if (token == JsonToken.START_OBJECT) { - if (fieldName.equals("select.where") || fieldName.equals("select.grouping")) { + if (fieldName.startsWith("input.") || fieldName.equals("select.where") || fieldName.equals("select.grouping")) { map.put(fieldName, skipChildren(parser, buf)); } else { parse(map, fieldName + "."); diff --git a/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java index 83022ccf3ff..7536a8c4914 100644 --- a/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java @@ -307,6 +307,21 @@ public class JSONSearchHandlerTestCase { } @Test + void testInputParameters() throws IOException { + String json = """ + { + "input": { + "query(q_category)": { "Tablet Keyboard Cases": 42.5 }, + "query(q_vector)": [ 1, 2.5, 3 ] + } + } + """; + Map<String, String> map = new Json2SingleLevelMap(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8))).parse(); + assertEquals("{ \"Tablet Keyboard Cases\": 42.5 }", map.get("input.query(q_category)")); + assertEquals("[ 1, 2.5, 3 ]", map.get("input.query(q_vector)")); + } + + @Test void testSelectParameters() throws IOException { ObjectNode json = jsonMapper.createObjectNode(); |