aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Ranking.java8
-rw-r--r--container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java20
2 files changed, 27 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/Ranking.java b/container-search/src/main/java/com/yahoo/search/query/Ranking.java
index b1dd5624d18..a2aed7a7496 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Ranking.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Ranking.java
@@ -113,6 +113,8 @@ public class Ranking implements Cloneable {
private SoftTimeout softTimeout = new SoftTimeout();
+ private boolean useSignificance = false;
+
public Ranking(Query parent) {
this.parent = parent;
this.rankFeatures = new RankFeatures(this);
@@ -217,6 +219,12 @@ public class Ranking implements Cloneable {
/** Returns whether rank features should be dumped with the result of this query, default false */
public boolean getListFeatures() { return listFeatures; }
+ /** Set whether to use significance in ranking */
+ public void setUseSignificance(boolean useSignificance) { this.useSignificance = useSignificance; }
+
+ /** Returns whether to use significance in ranking */
+ public boolean getUseSignificance() { return useSignificance; }
+
/** Returns the match phase rank settings of this. This is never null. */
public MatchPhase getMatchPhase() { return matchPhase; }
diff --git a/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java b/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java
index 0a42bf8a259..6cef576f967 100644
--- a/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java
@@ -14,8 +14,11 @@ import com.yahoo.prelude.query.WordItem;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
+import com.yahoo.search.query.Ranking;
import com.yahoo.search.searchchain.Execution;
+import com.yahoo.vespa.config.search.RankProfilesConfig;
+import java.util.HashMap;
import java.util.Optional;
import static com.yahoo.prelude.querytransform.StemmingSearcher.STEMMING;
@@ -32,15 +35,30 @@ public class SignificanceSearcher extends Searcher {
public final static String SIGNIFICANCE = "Significance";
private final SignificanceModelRegistry significanceModelRegistry;
+ private final RankProfilesConfig rankProfilesConfig;
+
+ private final HashMap<String, Boolean> useModel = new HashMap<>();
@Inject
- public SignificanceSearcher(SignificanceModelRegistry significanceModelRegistry) {
+ public SignificanceSearcher(SignificanceModelRegistry significanceModelRegistry, RankProfilesConfig rankProfilesConfig) {
this.significanceModelRegistry = significanceModelRegistry;
+ this.rankProfilesConfig = rankProfilesConfig;
+
+ for (RankProfilesConfig.Rankprofile profile : rankProfilesConfig.rankprofile()) {
+ for (RankProfilesConfig.Rankprofile.Fef.Property property : profile.fef().property()) {
+ if (property.name().equals("vespa.significance.use_model")) {
+ useModel.put(profile.name(), Boolean.parseBoolean(property.value()));
+ }
+ }
+ }
}
@Override
public Result search(Query query, Execution execution) {
+ Ranking ranking = query.getRanking();
+ if (!useModel.containsKey(ranking.getProfile()) || !useModel.get(ranking.getProfile())) return execution.search(query);
+
Language language = query.getModel().getParsingLanguage();
Optional<SignificanceModel> model = significanceModelRegistry.getModel(language);