diff options
author | HÃ¥vard Pettersen <3535158+havardpe@users.noreply.github.com> | 2022-04-25 14:29:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-25 14:29:18 +0200 |
commit | c4ef6387cc4bb71ca7f58f7530b99f87a2605b57 (patch) | |
tree | 45957480d27a1a8a462a290db306a07471651914 /config-model/src/main/java | |
parent | fc72f567084b123be3759512f65ac74542efdbfa (diff) | |
parent | def77fbc13aa10b59794f92ebc6d3c4cc458c845 (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')
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; } |