aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/ranking
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2023-10-16 16:37:00 +0200
committerHåvard Pettersen <havardpe@yahooinc.com>2023-10-17 15:11:01 +0200
commit484423b747694ae254dfd128fe51c8047e3da349 (patch)
tree2472906a4401d5bbf3dac706c592d6c7b3e37a16 /container-search/src/main/java/com/yahoo/search/ranking
parent96b948247bf88a21ead259462cbb2bc93c82db24 (diff)
test global phase reranking with dummy evaluation
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/ranking')
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java4
2 files changed, 14 insertions, 7 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java
index bb5a991c304..829d0c268e5 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java
@@ -50,9 +50,7 @@ public class GlobalPhaseRanker {
return Optional.empty();
}
- public void rerankHits(Query query, Result result, String schema) {
- var setup = globalPhaseSetupFor(query, schema).orElse(null);
- if (setup == null) return;
+ static void rerankHitsImpl(GlobalPhaseSetup setup, Query query, Result result) {
var mainSpec = setup.globalPhaseEvalSpec;
var mainSrc = withQueryPrep(mainSpec.evalSource(), mainSpec.fromQuery(), query);
int rerankCount = resolveRerankCount(setup, query);
@@ -68,6 +66,13 @@ public class GlobalPhaseRanker {
hideImplicitMatchFeatures(result, setup.matchFeaturesToHide);
}
+ public void rerankHits(Query query, Result result, String schema) {
+ var setup = globalPhaseSetupFor(query, schema);
+ if (setup.isPresent()) {
+ rerankHitsImpl(setup.get(), query, result);
+ }
+ }
+
static Supplier<Evaluator> withQueryPrep(Supplier<Evaluator> evalSource, List<String> queryFeatures, Query query) {
var prepared = PreparedInput.findFromQuery(query, queryFeatures);
Supplier<Evaluator> supplier = () -> {
@@ -80,7 +85,7 @@ public class GlobalPhaseRanker {
return supplier;
}
- private void hideImplicitMatchFeatures(Result result, Collection<String> namesToHide) {
+ private static void hideImplicitMatchFeatures(Result result, Collection<String> namesToHide) {
if (namesToHide.size() == 0) return;
var filter = new MatchFeatureFilter(namesToHide);
for (var iterator = result.hits().deepIterator(); iterator.hasNext();) {
@@ -94,7 +99,7 @@ public class GlobalPhaseRanker {
if (newValue.fieldCount() == 0) {
hit.removeField("matchfeatures");
} else {
- hit.setField("matchfeatures", newValue);
+ hit.setField("matchfeatures", new FeatureData(newValue));
}
}
}
@@ -106,7 +111,7 @@ public class GlobalPhaseRanker {
.flatMap(evaluator -> evaluator.getGlobalPhaseSetup(query.getRanking().getProfile()));
}
- private int resolveRerankCount(GlobalPhaseSetup setup, Query query) {
+ private static int resolveRerankCount(GlobalPhaseSetup setup, Query query) {
if (setup == null) {
// there is no global-phase at all (ignore override)
return 0;
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java b/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java
index 5ab2d7160f9..346acccd916 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java
@@ -30,7 +30,7 @@ record PreparedInput(String name, Tensor value) {
for (String queryFeatureName : queryFeatures) {
String needed = "query(" + queryFeatureName + ")";
// searchers are recommended to place query features here:
- var feature = rankFeatures.getTensor(queryFeatureName);
+ var feature = rankFeatures.getTensor(needed);
if (feature.isPresent()) {
result.add(new PreparedInput(needed, feature.get()));
} else {
@@ -38,6 +38,8 @@ record PreparedInput(String name, Tensor value) {
var objList = rankProps.get(queryFeatureName);
if (objList != null && objList.size() == 1 && objList.get(0) instanceof Tensor t) {
result.add(new PreparedInput(needed, t));
+ } else if (objList != null && objList.size() == 1 && objList.get(0) instanceof Double d) {
+ result.add(new PreparedInput(needed, Tensor.from(d)));
} else {
throw new IllegalArgumentException("missing query feature: " + queryFeatureName);
}