aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <root@screwdriver.com>2023-10-11 17:42:47 +0000
committerArne Juul <root@screwdriver.com>2023-10-11 17:49:11 +0000
commitaa6885abaa2d35ce073dee383987236df557fa30 (patch)
tree6abbfa2fb9e139857cf9478f9c0e3a4a2583e58f
parent60a9df99b067ddbfa72bc0a6d0cccbcd986cf45a (diff)
simplify after code review; GC leftover code
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/FunEvalSpec.java (renamed from container-search/src/main/java/com/yahoo/search/ranking/FunEvalCtx.java)2
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java21
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseSetup.java10
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/HitRescorer.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/NormalizerSetup.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/ResultReranker.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/SimpleEvaluator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/WrappedHit.java8
9 files changed, 26 insertions, 39 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/FunEvalCtx.java b/container-search/src/main/java/com/yahoo/search/ranking/FunEvalSpec.java
index c8b8810f368..df9c509dd82 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/FunEvalCtx.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/FunEvalSpec.java
@@ -4,4 +4,4 @@ package com.yahoo.search.ranking;
import java.util.List;
import java.util.function.Supplier;
-record FunEvalCtx(Supplier<Evaluator> evalSrc, List<String> fromQuery, List<String> fromMF) {}
+record FunEvalSpec(Supplier<Evaluator> evalSource, List<String> fromQuery, List<String> fromMF) {}
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 130cf720684..6e30a81eebc 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
@@ -48,28 +48,29 @@ public class GlobalPhaseRanker {
public void rerankHits(Query query, Result result, String schema) {
var setup = globalPhaseSetupFor(query, schema).orElse(null);
if (setup == null) return;
- var mainSrc = withQueryPrep(setup.globalPhaseEvalCtx, query);
- var mainMF = setup.globalPhaseEvalCtx.fromMF();
+ var mainSpec = setup.globalPhaseEvalSpec;
+ var mainSrc = withQueryPrep(mainSpec.evalSource(), mainSpec.fromQuery(), query);
int rerankCount = setup.rerankCount;
var normalizers = new ArrayList<NormalizerContext>();
for (var nSetup : setup.normalizers) {
- var normEvalSrc = withQueryPrep(nSetup.evalCtx(), query);
- normalizers.add(new NormalizerContext(nSetup.name(), nSetup.supplier().get(), normEvalSrc, nSetup.evalCtx().fromMF()));
+ var normSpec = nSetup.inputEvalSpec();
+ var normEvalSrc = withQueryPrep(normSpec.evalSource(), normSpec.fromQuery(), query);
+ normalizers.add(new NormalizerContext(nSetup.name(), nSetup.supplier().get(), normEvalSrc, normSpec.fromMF()));
}
- var rescorer = new HitRescorer(mainSrc, mainMF, normalizers);
+ var rescorer = new HitRescorer(mainSrc, mainSpec.fromMF(), normalizers);
var reranker = new ResultReranker(rescorer, rerankCount);
reranker.rerankHits(result);
hideImplicitMatchFeatures(result, setup.matchFeaturesToHide);
}
- static Supplier<Evaluator> withQueryPrep(FunEvalCtx evalCtx, Query query) {
- var prepared = PreparedInput.findFromQuery(query, evalCtx.fromQuery());
+ static Supplier<Evaluator> withQueryPrep(Supplier<Evaluator> evalSource, List<String> queryFeatures, Query query) {
+ var prepared = PreparedInput.findFromQuery(query, queryFeatures);
Supplier<Evaluator> supplier = () -> {
- var result = evalCtx.evalSrc().get();
+ var evaluator = evalSource.get();
for (var entry : prepared) {
- result.bind(entry.name(), entry.value());
+ evaluator.bind(entry.name(), entry.value());
}
- return result;
+ return evaluator;
};
return supplier;
}
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseSetup.java b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseSetup.java
index e9335ee8123..31a676e4c8e 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseSetup.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseSetup.java
@@ -16,17 +16,17 @@ import java.util.function.Supplier;
class GlobalPhaseSetup {
- final FunEvalCtx globalPhaseEvalCtx;
+ final FunEvalSpec globalPhaseEvalSpec;
final int rerankCount;
final Collection<String> matchFeaturesToHide;
final List<NormalizerSetup> normalizers;
- GlobalPhaseSetup(FunEvalCtx globalPhase,
+ GlobalPhaseSetup(FunEvalSpec globalPhaseEvalSpec,
final int rerankCount,
Collection<String> matchFeaturesToHide,
List<NormalizerSetup> normalizers)
{
- this.globalPhaseEvalCtx = globalPhase;
+ this.globalPhaseEvalSpec = globalPhaseEvalSpec;
this.rerankCount = rerankCount;
this.matchFeaturesToHide = matchFeaturesToHide;
this.normalizers = normalizers;
@@ -105,7 +105,7 @@ class GlobalPhaseSetup {
}
}
Supplier<Evaluator> supplier = SimpleEvaluator.wrap(functionEvaluatorSource);
- var gfun = new FunEvalCtx(supplier, fromQuery, fromMF);
+ var gfun = new FunEvalSpec(supplier, fromQuery, fromMF);
return new GlobalPhaseSetup(gfun, rerankCount, namesToHide, normalizers);
}
return null;
@@ -129,7 +129,7 @@ class GlobalPhaseSetup {
throw new IllegalArgumentException("Bad config, missing normalizer input: " + input);
}
}
- var fun = new FunEvalCtx(evalSupplier, fromQuery, fromMF);
+ var fun = new FunEvalSpec(evalSupplier, fromQuery, fromMF);
return new NormalizerSetup(cfg.name(), makeNormalizerSupplier(cfg, rerankCount), fun);
}
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/HitRescorer.java b/container-search/src/main/java/com/yahoo/search/ranking/HitRescorer.java
index 7336713da64..fee4f5b4160 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/HitRescorer.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/HitRescorer.java
@@ -37,7 +37,7 @@ class HitRescorer {
}
}
- boolean rescoreHit(WrappedHit wrapped) {
+ double rescoreHit(WrappedHit wrapped) {
var scorer = mainEvalSrc.get();
for (var n : normalizers) {
double normalizedValue = n.normalizer().getOutput(wrapped.getIdx());
@@ -45,7 +45,7 @@ class HitRescorer {
}
double newScore = evalScorer(wrapped, scorer, mainFromMF);
wrapped.setScore(newScore);
- return true;
+ return newScore;
}
private static double evalScorer(WrappedHit wrapped, Evaluator scorer, List<String> fromMF) {
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/NormalizerSetup.java b/container-search/src/main/java/com/yahoo/search/ranking/NormalizerSetup.java
index 6e93a73b6ed..32fbb3190fc 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/NormalizerSetup.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/NormalizerSetup.java
@@ -3,4 +3,4 @@ package com.yahoo.search.ranking;
import java.util.function.Supplier;
-record NormalizerSetup(String name, Supplier<Normalizer> supplier, FunEvalCtx evalCtx) {}
+record NormalizerSetup(String name, Supplier<Normalizer> supplier, FunEvalSpec inputEvalSpec) {}
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java b/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
index b6b4c4080b4..0ebb98af60e 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
@@ -63,10 +63,6 @@ public class RankProfilesEvaluator extends AbstractComponent {
return modelForRankProfile(rankProfile).evaluatorOf(functionName);
}
- Supplier<Evaluator> getSupplier(String rankProfile, String functionName) {
- return () -> new SimpleEvaluator(evaluatorForFunction(rankProfile, functionName));
- }
-
private Map<String, GlobalPhaseSetup> profilesWithGlobalPhase = new HashMap<>();
Optional<GlobalPhaseSetup> getGlobalPhaseSetup(String rankProfile) {
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/ResultReranker.java b/container-search/src/main/java/com/yahoo/search/ranking/ResultReranker.java
index 2d54e58daa2..2e9edd6de3a 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/ResultReranker.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/ResultReranker.java
@@ -62,13 +62,11 @@ class ResultReranker {
for (var iterator = hitsToRescore.iterator(); count < rerankCount && iterator.hasNext(); ) {
WrappedHit wrapped = iterator.next();
double oldScore = wrapped.getScore();
- boolean didRerank = hitRescorer.rescoreHit(wrapped);
- if (didRerank) {
- ranges.withInitialScore(oldScore);
- ranges.withFinalScore(wrapped.getScore());
- ++count;
- iterator.remove();
- }
+ double newScore = hitRescorer.rescoreHit(wrapped);
+ ranges.withInitialScore(oldScore);
+ ranges.withFinalScore(newScore);
+ ++count;
+ iterator.remove();
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/SimpleEvaluator.java b/container-search/src/main/java/com/yahoo/search/ranking/SimpleEvaluator.java
index f2943c18960..548576e3a15 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/SimpleEvaluator.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/SimpleEvaluator.java
@@ -26,7 +26,7 @@ class SimpleEvaluator implements Evaluator {
@Override
public Evaluator bind(String name, Tensor value) {
- if (value != null) evaluator.bind(name, value);
+ evaluator.bind(name, value);
return this;
}
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/WrappedHit.java b/container-search/src/main/java/com/yahoo/search/ranking/WrappedHit.java
index 3b564eec3aa..7c33b836e33 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/WrappedHit.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/WrappedHit.java
@@ -66,14 +66,6 @@ class WrappedHit implements Comparable<WrappedHit> {
return asTensor;
}
- Double getDouble(String argName) {
- Double arg = matchFeatures.getDouble(argName);
- if (arg == null) {
- arg = matchFeatures.getDouble(alternate(argName));
- }
- return arg;
- }
-
private static final String RE_PREFIX = RANKING_EXPRESSION_WRAPPER + "(";
private static final String RE_SUFFIX = ")";
private static final int RE_PRE_LEN = RE_PREFIX.length();