diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/query/Ranking.java | 8 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java | 20 |
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); |