aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-04-29 13:44:11 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2024-04-29 13:44:11 +0000
commit388c29c6db7dea0ad256db7b3abf9e5f9d5cfb60 (patch)
tree5248ae2b5212eb9b28df1509e487ff1a5f951916 /searchcore/src
parentf58fab3b4c021ff03f9d8e70f3bc029de8c0d13b (diff)
Wire control of scoring range for weakand scorer from rank/query properties.
Diffstat (limited to 'searchcore/src')
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp4
2 files changed, 6 insertions, 3 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
index 0b2660824c0..919309c5dae 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
@@ -9,6 +9,7 @@
#include <vespa/searchlib/queryeval/intermediate_blueprints.h>
#include <vespa/searchlib/queryeval/equiv_blueprint.h>
#include <vespa/searchlib/queryeval/get_weight_from_node.h>
+#include <vespa/searchlib/attribute/attribute_blueprint_params.h>
#include <vespa/vespalib/util/issue.h>
using namespace search::queryeval;
@@ -21,7 +22,7 @@ namespace {
struct Mixer {
std::unique_ptr<OrBlueprint> attributes;
- Mixer() : attributes() {}
+ Mixer() noexcept: attributes() {}
void addAttribute(Blueprint::UP attr) {
if ( ! attributes) {
@@ -66,7 +67,7 @@ private:
void buildIntermediate(IntermediateBlueprint *b, NodeType &n) __attribute__((noinline));
void buildWeakAnd(ProtonWeakAnd &n) {
- auto *wand = new WeakAndBlueprint(n.getTargetNumHits());
+ auto *wand = new WeakAndBlueprint(n.getTargetNumHits(), _requestContext.get_attribute_blueprint_params().weakand_range);
Blueprint::UP result(wand);
for (auto node : n.getChildren()) {
uint32_t weight = getWeightFromNode(*node).percent();
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
index 532ec2f63bd..06290386a31 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
@@ -340,6 +340,7 @@ MatchToolsFactory::extract_attribute_blueprint_params(const RankSetup& rank_setu
double upper_limit = GlobalFilterUpperLimit::lookup(rank_properties, rank_setup.get_global_filter_upper_limit());
double target_hits_max_adjustment_factor = TargetHitsMaxAdjustmentFactor::lookup(rank_properties, rank_setup.get_target_hits_max_adjustment_factor());
auto fuzzy_matching_algorithm = FuzzyAlgorithm::lookup(rank_properties, rank_setup.get_fuzzy_matching_algorithm());
+ double weakand_range = temporary::WeakAndRange::lookup(rank_properties, rank_setup.get_weakand_range());
// Note that we count the reserved docid 0 as active.
// This ensures that when searchable-copies=1, the ratio is 1.0.
@@ -348,7 +349,8 @@ MatchToolsFactory::extract_attribute_blueprint_params(const RankSetup& rank_setu
return {lower_limit * active_hit_ratio,
upper_limit * active_hit_ratio,
target_hits_max_adjustment_factor,
- fuzzy_matching_algorithm};
+ fuzzy_matching_algorithm,
+ weakand_range};
}
AttributeOperationTask::AttributeOperationTask(const RequestContext & requestContext,