summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.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/search/querytransform/DefaultPositionSearcher.java
Publish
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
new file mode 100644
index 00000000000..c2d462a17e4
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
@@ -0,0 +1,47 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.querytransform;
+
+import static com.yahoo.prelude.searcher.PosSearcher.POSITION_PARSING;
+
+import com.yahoo.component.chain.dependencies.After;
+import com.yahoo.component.chain.dependencies.Before;
+import com.yahoo.prelude.IndexFacts;
+import com.yahoo.prelude.Location;
+import com.yahoo.search.Query;
+import com.yahoo.search.Searcher;
+import com.yahoo.search.searchchain.Execution;
+import com.yahoo.search.searchchain.PhaseNames;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * If default position has not been set, it will be set here.
+ *
+ * @author <a href="mailto:balder@yahoo-inc.com">Henning Baldersheim</a>
+ */
+@After({PhaseNames.RAW_QUERY, POSITION_PARSING})
+@Before(PhaseNames.TRANSFORMED_QUERY)
+public class DefaultPositionSearcher extends Searcher {
+
+ @Override
+ public com.yahoo.search.Result search(Query query, Execution execution) {
+ Location location = query.getRanking().getLocation();
+ if (location != null && (location.getAttribute() == null)) {
+ IndexFacts facts = execution.context().getIndexFacts();
+ List<String> search = facts.newSession(query.getModel().getSources(), query.getModel().getRestrict()).documentTypes();
+
+ for (String sd : search) {
+ String defaultPosition = facts.getDefaultPosition(sd);
+ if (defaultPosition != null) {
+ location.setAttribute(defaultPosition);
+ }
+ }
+ if (location.getAttribute() == null) {
+ location.setAttribute(facts.getDefaultPosition(null));
+ }
+ }
+ return execution.search(query);
+ }
+
+}