summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java
diff options
context:
space:
mode:
authorHÃ¥vard Pettersen <3535158+havardpe@users.noreply.github.com>2022-04-25 14:29:18 +0200
committerGitHub <noreply@github.com>2022-04-25 14:29:18 +0200
commitc4ef6387cc4bb71ca7f58f7530b99f87a2605b57 (patch)
tree45957480d27a1a8a462a290db306a07471651914 /config-model/src/main/java
parentfc72f567084b123be3759512f65ac74542efdbfa (diff)
parentdef77fbc13aa10b59794f92ebc6d3c4cc458c845 (diff)
Merge pull request #22248 from vespa-engine/arnej/add-fast-rank
add fast-rank for tensor attributes
Diffstat (limited to 'config-model/src/main/java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java16
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java3
4 files changed, 23 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
index 7acf5557236..30cb0d9c07d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
@@ -216,7 +216,8 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce
}
aaB.enablebitvectors(attribute.isEnabledBitVectors());
aaB.enableonlybitvector(attribute.isEnabledOnlyBitVector());
- if (attribute.isFastSearch()) {
+ if (attribute.isFastSearch() || attribute.isFastRank()) {
+ // TODO make a separate fastrank flag in config instead of overloading fastsearch
aaB.fastsearch(true);
}
if (attribute.isFastAccess()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java
index b466a78c69b..2c4a2c06d02 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java
@@ -25,6 +25,7 @@ import com.yahoo.document.datatypes.TensorFieldValue;
import com.yahoo.tensor.TensorType;
import java.io.Serializable;
+import java.util.function.Supplier;
import java.util.LinkedHashSet;
import java.util.Objects;
import java.util.Optional;
@@ -52,6 +53,7 @@ public final class Attribute implements Cloneable, Serializable {
private boolean enableBitVectors = false;
private boolean enableOnlyBitVector = false;
+ private boolean fastRank = false;
private boolean fastSearch = false;
private boolean fastAccess = false;
private boolean huge = false;
@@ -195,6 +197,7 @@ public final class Attribute implements Cloneable, Serializable {
public boolean isEnabledBitVectors() { return enableBitVectors; }
public boolean isEnabledOnlyBitVector() { return enableOnlyBitVector; }
public boolean isFastSearch() { return fastSearch; }
+ public boolean isFastRank() { return fastRank; }
public boolean isFastAccess() { return fastAccess; }
public boolean isHuge() { return huge; }
public boolean isPaged() { return paged; }
@@ -228,9 +231,20 @@ public final class Attribute implements Cloneable, Serializable {
public void setPrefetch(Boolean prefetch) { this.prefetch = prefetch; }
public void setEnableBitVectors(boolean enableBitVectors) { this.enableBitVectors = enableBitVectors; }
public void setEnableOnlyBitVector(boolean enableOnlyBitVector) { this.enableOnlyBitVector = enableOnlyBitVector; }
+ public void setFastRank(boolean value) {
+ Supplier<IllegalArgumentException> badGen = () -> new IllegalArgumentException("fast-rank is only valid for tensor attributes, invalid for: "+this);
+ var tt = tensorType.orElseThrow(badGen);
+ for (var dim : tt.dimensions()) {
+ if (dim.isMapped()) {
+ this.fastRank = value;
+ return;
+ }
+ }
+ throw badGen.get();
+ }
public void setFastSearch(boolean fastSearch) { this.fastSearch = fastSearch; }
public void setHuge(boolean huge) { this.huge = huge; }
- public void setPaged(boolean paged) { this.paged = paged; }
+ public void setPaged(boolean paged) { this.paged = paged; }
public void setFastAccess(boolean fastAccess) { this.fastAccess = fastAccess; }
public void setPosition(boolean position) { this.isPosition = position; }
public void setMutable(boolean mutable) { this.mutable = mutable; }
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java
index 92e099bc1fe..0e79356abd2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java
@@ -79,6 +79,9 @@ public class ConvertParsedFields {
attribute.setHuge(parsed.getHuge());
attribute.setPaged(parsed.getPaged());
attribute.setFastSearch(parsed.getFastSearch());
+ if (parsed.getFastRank()) {
+ attribute.setFastRank(parsed.getFastRank());
+ }
attribute.setFastAccess(parsed.getFastAccess());
attribute.setMutable(parsed.getMutable());
attribute.setEnableBitVectors(parsed.getEnableBitVectors());
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java
index b5dabcdb608..b48bad89114 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java
@@ -17,6 +17,7 @@ class ParsedAttribute extends ParsedBlock {
private boolean enableBitVectors = false;
private boolean enableOnlyBitVector = false;
private boolean enableFastAccess = false;
+ private boolean enableFastRank = false;
private boolean enableFastSearch = false;
private boolean enableHuge = false;
private boolean enableMutable = false;
@@ -35,6 +36,7 @@ class ParsedAttribute extends ParsedBlock {
boolean getEnableBitVectors() { return this.enableBitVectors; }
boolean getEnableOnlyBitVector() { return this.enableOnlyBitVector; }
boolean getFastAccess() { return this.enableFastAccess; }
+ boolean getFastRank() { return this.enableFastRank; }
boolean getFastSearch() { return this.enableFastSearch; }
boolean getHuge() { return this.enableHuge; }
boolean getMutable() { return this.enableMutable; }
@@ -59,6 +61,7 @@ class ParsedAttribute extends ParsedBlock {
void setEnableBitVectors(boolean value) { this.enableBitVectors = value; }
void setEnableOnlyBitVector(boolean value) { this.enableOnlyBitVector = value; }
void setFastAccess(boolean value) { this.enableFastAccess = true; }
+ void setFastRank(boolean value) { this.enableFastRank = true; }
void setFastSearch(boolean value) { this.enableFastSearch = true; }
void setHuge(boolean value) { this.enableHuge = true; }
void setMutable(boolean value) { this.enableMutable = true; }