aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /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.java42
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);
+ }
+
+}