diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-11-19 23:36:09 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-11-19 23:36:09 +0100 |
commit | f5d72158d305cf027f7ad34956303ac669802046 (patch) | |
tree | 031ec38ba083507acd8eac00c5d3c11a4b67d43f | |
parent | 59a51afdf4ddf9ac7778f395b9943f479b8fbc74 (diff) |
Control always-mark-phrase-expensive with feature flag.
5 files changed, 18 insertions, 1 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json index 1b505cdbfae..bf2f2cfac44 100644 --- a/config-model-api/abi-spec.json +++ b/config-model-api/abi-spec.json @@ -1288,7 +1288,8 @@ "public java.lang.String unknownConfigDefinition()", "public int searchHandlerThreadpool()", "public long mergingMaxMemoryUsagePerNode()", - "public boolean usePerDocumentThrottledDeleteBucket()" + "public boolean usePerDocumentThrottledDeleteBucket()", + "public boolean alwaysMarkPhraseExpensive()" ], "fields" : [ ] }, diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index 188c4a32978..d9f3a76d9dc 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -119,6 +119,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"hmusum"}) default int searchHandlerThreadpool() { return 2; } @ModelFeatureFlag(owners = {"vekterli"}) default long mergingMaxMemoryUsagePerNode() { return -1; } @ModelFeatureFlag(owners = {"vekterli"}) default boolean usePerDocumentThrottledDeleteBucket() { return false; } + @ModelFeatureFlag(owners = {"baldersheim"}) default boolean alwaysMarkPhraseExpensive() { return false; } } /** Warning: As elsewhere in this package, do not make backwards incompatible changes that will break old config models! */ diff --git a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java index 8606599f530..d87a38e31ae 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java @@ -172,6 +172,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { private final OptionalDouble targetHitsMaxAdjustmentFactor; private final double rankScoreDropLimit; private final boolean enableNestedMultivalueGrouping; + private final boolean alwaysMarkPhraseExpensive; /** * The rank type definitions used to derive settings for the native rank features @@ -214,6 +215,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { numSearchPartitions = compiled.getNumSearchPartitions(); termwiseLimit = compiled.getTermwiseLimit().orElse(deployProperties.featureFlags().defaultTermwiseLimit()); enableNestedMultivalueGrouping = deployProperties.featureFlags().enableNestedMultivalueGrouping(); + alwaysMarkPhraseExpensive = deployProperties.featureFlags().alwaysMarkPhraseExpensive(); postFilterThreshold = compiled.getPostFilterThreshold(); approximateThreshold = compiled.getApproximateThreshold(); targetHitsMaxAdjustmentFactor = compiled.getTargetHitsMaxAdjustmentFactor(); @@ -467,6 +469,9 @@ public class RawRankProfile implements RankProfilesConfig.Producer { if (enableNestedMultivalueGrouping) { properties.add(new Pair<>("vespa.temporary.enable_nested_multivalue_grouping", String.valueOf(enableNestedMultivalueGrouping))); } + if (alwaysMarkPhraseExpensive) { + properties.add(new Pair<>("vespa.matching.always_mark_phrase_expensive", String.valueOf(alwaysMarkPhraseExpensive))); + } if (postFilterThreshold.isPresent()) { properties.add(new Pair<>("vespa.matching.global_filter.upper_limit", String.valueOf(postFilterThreshold.getAsDouble()))); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 28d7c1eaef6..866431c218e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -205,6 +205,7 @@ public class ModelContextImpl implements ModelContext { private final boolean enableGlobalPhase; private final String summaryDecodePolicy; private final boolean enableNestedMultivalueGrouping; + private final boolean alwaysMarkPhraseExpensive; private final int contentLayerMetadataFeatureLevel; private final boolean dynamicHeapSize; private final String unknownConfigDefinition; @@ -257,6 +258,7 @@ public class ModelContextImpl implements ModelContext { this.searchHandlerThreadpool = flagValue(source, appId, version, Flags.SEARCH_HANDLER_THREADPOOL); this.mergingMaxMemoryUsagePerNode = flagValue(source, appId, version, Flags.MERGING_MAX_MEMORY_USAGE_PER_NODE); this.usePerDocumentThrottledDeleteBucket = flagValue(source, appId, version, Flags.USE_PER_DOCUMENT_THROTTLED_DELETE_BUCKET); + this.alwaysMarkPhraseExpensive = flagValue(source, appId, version, Flags.ALWAYS_MARK_PHRASE_EXPENSIVE); } @Override public int heapSizePercentage() { return heapPercentage; } @@ -305,6 +307,7 @@ public class ModelContextImpl implements ModelContext { } @Override public boolean enableGlobalPhase() { return enableGlobalPhase; } @Override public boolean enableNestedMultivalueGrouping() { return enableNestedMultivalueGrouping; } + @Override public boolean alwaysMarkPhraseExpensive() { return alwaysMarkPhraseExpensive; } @Override public int contentLayerMetadataFeatureLevel() { return contentLayerMetadataFeatureLevel; } @Override public boolean dynamicHeapSize() { return dynamicHeapSize; } @Override public String unknownConfigDefinition() { return unknownConfigDefinition; } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java index 7a7087fb434..b08dec1c267 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -320,6 +320,13 @@ public class Flags { "Takes effect at redeployment", INSTANCE_ID); + public static final UnboundBooleanFlag ALWAYS_MARK_PHRASE_EXPENSIVE = defineFeatureFlag( + "always-mark-phrase-expensive", false, + List.of("baldersheim"), "2023-11-20", "2023-12-31", + "If true all phrases will be marked expensive, independent of parents", + "Takes effect at redeployment", + INSTANCE_ID); + public static final UnboundBooleanFlag WRITE_CONFIG_SERVER_SESSION_DATA_AS_ONE_BLOB = defineFeatureFlag( "write-config-server-session-data-as-blob", false, List.of("hmusum"), "2023-07-19", "2024-01-01", |