aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-03-29 12:21:56 +0200
committerJon Bratseth <bratseth@gmail.com>2022-03-29 12:21:56 +0200
commite69d6e8f3d8a6504135f6d2733a3a42f6a041ed4 (patch)
tree046483fb628977f62a66cb660d4a09fcd4302e0d /vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
parent13100e8dcc72b7c879727e5d96e1fdfceb2d3bcc (diff)
Validate query feature tensor types
- Validate tensor feature types when a tensor is set programmatically. - Add a toShortString for messages containing tensors. - Consistent and nicer spacing in tensor string forms.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
index 0e919d828ed..89eefeced56 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
@@ -219,21 +219,31 @@ public abstract class IndexedTensor implements Tensor {
}
@Override
- public String toString() {
- if (type.rank() == 0) return Tensor.toStandardString(this);
+ public String toString() { return toString(Long.MAX_VALUE); }
+
+ @Override
+ public String toShortString() {
+ return toString(Math.max(2, 10 / (type().dimensions().stream().filter(d -> d.isMapped()).count() + 1)));
+ }
+
+ private String toString(long maxCells) {
+ if (type.rank() == 0) return Tensor.toStandardString(this, maxCells);
if (type.dimensions().stream().anyMatch(d -> d.size().isEmpty()))
- return Tensor.toStandardString(this);
+ return Tensor.toStandardString(this, maxCells);
Indexes indexes = Indexes.of(dimensionSizes);
StringBuilder b = new StringBuilder(type.toString()).append(":");
- indexedBlockToString(this, indexes, b);
+ indexedBlockToString(this, indexes, maxCells, b);
return b.toString();
}
- static void indexedBlockToString(IndexedTensor tensor, Indexes indexes, StringBuilder b) {
- for (int index = 0; index < tensor.size(); index++) {
+ static void indexedBlockToString(IndexedTensor tensor, Indexes indexes, long maxCells, StringBuilder b) {
+ int index = 0;
+ for (; index < tensor.size() && index < maxCells; index++) {
indexes.next();
+ if (index > 0)
+ b.append(", ");
// start brackets
for (int i = 0; i < indexes.nextDimensionsAtStart(); i++)
@@ -252,9 +262,9 @@ public abstract class IndexedTensor implements Tensor {
// end bracket and comma
for (int i = 0; i < indexes.nextDimensionsAtEnd(); i++)
b.append("]");
- if (index < tensor.size() - 1)
- b.append(", ");
}
+ if (index == maxCells && index < tensor.size())
+ b.append(", ...]");
}
@Override