diff options
author | Arne Juul <root@screwdriver.com> | 2023-10-11 17:42:47 +0000 |
---|---|---|
committer | Arne Juul <root@screwdriver.com> | 2023-10-11 17:49:11 +0000 |
commit | aa6885abaa2d35ce073dee383987236df557fa30 (patch) | |
tree | 6abbfa2fb9e139857cf9478f9c0e3a4a2583e58f /container-search/src/main/java | |
parent | 60a9df99b067ddbfa72bc0a6d0cccbcd986cf45a (diff) |
simplify after code review; GC leftover code
Diffstat (limited to 'container-search/src/main/java')
-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.java | 21 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseSetup.java | 10 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/HitRescorer.java | 4 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/NormalizerSetup.java | 2 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java | 4 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/ResultReranker.java | 12 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/SimpleEvaluator.java | 2 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/WrappedHit.java | 8 |
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(); |