diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-01-14 18:41:49 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-01-14 18:41:49 +0100 |
commit | 416f596b150ec159717bfd2f9b2ef70e4d4cd3dd (patch) | |
tree | fd78cf0541670dd50e2dc3256c5b9755ced8f73e /vespaclient-container-plugin/src | |
parent | a289581cbf94ff6997356110b54bd6993e956b9e (diff) |
Support direct tensor rendering
Diffstat (limited to 'vespaclient-container-plugin/src')
2 files changed, 15 insertions, 4 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java index 7a66ba2ee79..1e2ee3968fa 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java @@ -749,14 +749,25 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { private boolean tensorShortForm() { if (request != null && request.parameters().containsKey("format.tensors") && - request.parameters().get("format.tensors").contains("long")) { + ( request.parameters().get("format.tensors").contains("long") + || request.parameters().get("format.tensors").contains("long-value"))) { return false; } return true; // default } + private boolean tensorDirectValues() { + if (request != null && + request.parameters().containsKey("format.tensors") && + ( request.parameters().get("format.tensors").contains("short-value") + || request.parameters().get("format.tensors").contains("long-value"))) { + return true; + } + return false; // TODO: Flip default on Vespa 9 + } + synchronized void writeSingleDocument(Document document) throws IOException { - new JsonWriter(json, tensorShortForm()).writeFields(document); + new JsonWriter(json, tensorShortForm(), tensorDirectValues()).writeFields(document); } synchronized void writeDocumentsArrayStart() throws IOException { @@ -775,7 +786,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { ByteArrayOutputStream myOut = new ByteArrayOutputStream(1); myOut.write(','); // Prepend rather than append, to avoid double memory copying. try (JsonGenerator myJson = jsonFactory.createGenerator(myOut)) { - new JsonWriter(myJson, tensorShortForm()).write(document); + new JsonWriter(myJson, tensorShortForm(), tensorDirectValues()).write(document); } docs.add(myOut); diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java index 973d0a98b24..cc6b8567b03 100644 --- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java +++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java @@ -527,7 +527,7 @@ public class DocumentV1ApiTest { " \"id\": \"id:space:music::one\"," + " \"fields\": {" + " \"artist\": \"Tom Waits\"," + - " \"embedding\": { \"cells\": [{\"address\":{\"x\":\"0\"},\"value\":1.0},{\"address\":{\"x\":\"1\"},\"value\": 2.0},{\"address\":{\"x\":\"2\"},\"value\": 3.0}]}" + + " \"embedding\": { \"type\": \"tensor(x[3])\",\"cells\": [{\"address\":{\"x\":\"0\"},\"value\":1.0},{\"address\":{\"x\":\"1\"},\"value\": 2.0},{\"address\":{\"x\":\"2\"},\"value\": 3.0}]}" + " }" + "}", response.readAll()); assertEquals(200, response.getStatus()); |