diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-01-25 16:34:45 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-01-25 16:34:45 +0100 |
commit | 57f8c9b3df28c4b24ce7f18727ac89c3c5987954 (patch) | |
tree | 4c228d6279e76c3d938cfe438153b9a743b762fb /config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java | |
parent | e95b6cf8b4f348ed2d182eeeb57088a390e529f2 (diff) |
Resolve document references in search builder
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java index 9c9bc559dc3..d239c0301ef 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java @@ -8,7 +8,6 @@ import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.document.DocumentTypeManager; import com.yahoo.io.IOUtils; import com.yahoo.io.reader.NamedReader; -import com.yahoo.search.query.profile.QueryProfileRegistry; import com.yahoo.searchdefinition.derived.SearchOrderer; import com.yahoo.searchdefinition.document.SDDocumentType; import com.yahoo.searchdefinition.parser.ParseException; @@ -23,7 +22,10 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; /** * Helper class for importing {@link Search} objects in an unambiguous way. The pattern for using this is to 1) Import @@ -230,6 +232,8 @@ public class SearchBuilder { new FieldOperationApplier().process(sdoc); } + resolveDocumentReferences(); + DocumentModelBuilder builder = new DocumentModelBuilder(model); for (Search search : new SearchOrderer().order(searchList)) { new FieldOperationApplierForSearch().process(search); @@ -244,7 +248,15 @@ public class SearchBuilder { searchList = built; isBuilt = true; } - + + private void resolveDocumentReferences() { + DocumentReferenceResolver resolver = new DocumentReferenceResolver(searchList); + searchList.stream() + .filter(Search::hasDocument) + .map(Search::getDocument) + .forEach(resolver::resolveReferences); + } + /** * Processes and returns the given {@link Search} object. This method has been factored out of the {@link * #build()} method so that subclasses can choose not to build anything. |