diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java |
Publish
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java new file mode 100644 index 00000000000..7df98fdd093 --- /dev/null +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java @@ -0,0 +1,42 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.prelude.querytransform; + + +import java.util.List; + +import com.yahoo.component.chain.dependencies.After; +import com.yahoo.component.chain.dependencies.Before; +import com.yahoo.search.Searcher; +import com.yahoo.search.query.Sorting.FieldOrder; +import com.yahoo.search.searchchain.Execution; + + +/** + * Avoid doing relevance calculations if sorting only + * on attributes. + * + * @author Steinar Knutsen + */ +@After("rawQuery") +@Before("transformedQuery") +public class NoRankingSearcher extends Searcher { + + private static final String RANK = "[rank]"; + private static final String UNRANKED = "unranked"; + + @Override + public com.yahoo.search.Result search(com.yahoo.search.Query query, Execution execution) { + List<FieldOrder> s = (query.getRanking().getSorting() != null) ? query.getRanking().getSorting().fieldOrders() : null; + if (s == null) { + return execution.search(query); + } + for (FieldOrder f : s) { + if (RANK.equals(f.getFieldName())) { + return execution.search(query); + } + } + query.getRanking().setProfile(UNRANKED); + return execution.search(query); + } + +} |