diff options
author | Arne H Juul <arnej@yahooinc.com> | 2021-11-09 15:09:18 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2021-11-09 15:09:18 +0000 |
commit | 5722111fe3a1f675170c42f2298ac70f368d3e6e (patch) | |
tree | 2c4120e6ba01c962f1de5fd9d045c5d49a4cd3ab /container-search | |
parent | 5b18b3978ee3c8a27c1d544de4ff6a4ea5e6aa9d (diff) |
more cleanup of MatchFeatureData
Diffstat (limited to 'container-search')
3 files changed, 14 insertions, 17 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MatchFeatureData.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MatchFeatureData.java index 3a7a1796f04..0a9b64c9b4f 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MatchFeatureData.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MatchFeatureData.java @@ -20,7 +20,7 @@ import java.util.Map; * for the field names. * @author arnej */ -public class MatchFeatureData { +class MatchFeatureData { private final Hashlet<String,Integer> hashlet; @@ -38,10 +38,9 @@ public class MatchFeatureData { private final Hashlet<String,Integer> hashlet; private final byte[][] dataValues; private final double[] doubleValues; - private int index = 0; public Type type() { return Type.OBJECT; } - public boolean valid() { return index == doubleValues.length; } + public boolean valid() { return true; } public int fieldCount() { return hashlet.size(); } public void traverse(ObjectTraverser ot) { for (int i = 0; i < hashlet.size(); i++) { @@ -52,13 +51,12 @@ public class MatchFeatureData { } public Inspector field(String name) { int offset = hashlet.getIndexOfKey(name); - if (offset < 0 || ! valid()) { + if (offset < 0) { return invalid(); } return valueAt(offset); } public Iterable<Map.Entry<String,Inspector>> fields() { - if (! valid()) { return List.of(); } var list = new ArrayList<Map.Entry<String,Inspector>>(hashlet.size()); for (int i = 0; i < hashlet.size(); i++) { String fn = hashlet.key(i); @@ -76,10 +74,10 @@ public class MatchFeatureData { } // package-private: - void add(byte[] data) { + void set(int index, byte[] data) { dataValues[index++] = data; } - void add(double value) { + void set(int index, double value) { doubleValues[index++] = value; } diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java index 8f8bfb63447..3bb283698ae 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java @@ -231,12 +231,13 @@ public class ProtobufSerialization { var hitFeatures = matchFeatures.addHit(); var featureList = replyHit.getMatchFeaturesList(); if (featureList.size() == featureNames.size()) { + int idx = 0; for (SearchProtocol.Feature value : featureList) { ByteString tensorBlob = value.getTensor(); if (tensorBlob.isEmpty()) { - hitFeatures.add(value.getNumber()); + hitFeatures.set(idx++, value.getNumber()); } else { - hitFeatures.add(tensorBlob.toByteArray()); + hitFeatures.set(idx++, tensorBlob.toByteArray()); } } hit.addMatchFeatures(hitFeatures); diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java index 0ef6fbae062..6834a5edf9b 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java @@ -26,15 +26,13 @@ public class MatchFeatureDataTest { var mf = new MatchFeatureData(names); var hit = mf.addHit(); assertEquals(hit.type(), Type.OBJECT); - assertFalse(hit.valid()); - hit.add(1.0); - hit.add(2.0); - byte[] somebytes = { 42, 0, 17 }; - hit.add(somebytes); - hit.add(4.0); - assertFalse(hit.valid()); - hit.add(5.0); assertTrue(hit.valid()); + hit.set(0, 1.0); + byte[] somebytes = { 42, 0, 17 }; + hit.set(2, somebytes); + hit.set(4, 5.0); + hit.set(1, 2.0); + hit.set(3, 4.0); assertEquals(0, hit.entryCount()); assertEquals(5, hit.fieldCount()); var f0 = hit.field("not"); |