aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-09-18 10:26:46 -0700
committerJon Bratseth <bratseth@oath.com>2018-09-18 10:26:46 -0700
commit1c37f6a5646d991de68759f2312164799a89ccaa (patch)
tree8ca9cdb8b101631bba9cccef51a3542c890ca20c
parent17dc219ade1c241f7e40d5e0942d291219439792 (diff)
Don't build rank profiles when generating document Java classes
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java35
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/MinimalProcessingSearchBuilder.java16
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java6
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java32
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/DeprecateAttributePrefetch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetValidity.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexSettingsNonFieldNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MinimalProcessing.java10
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java6
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java25
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SetLanguage.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java6
-rw-r--r--config-model/src/main/javacc/SDParser.jj23
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java11
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributePropertiesTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java3
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java18
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java2
-rw-r--r--vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java13
78 files changed, 197 insertions, 157 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java
new file mode 100644
index 00000000000..9335c0b4005
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java
@@ -0,0 +1,35 @@
+package com.yahoo.searchdefinition;
+
+import java.util.List;
+
+/**
+ * A rank profile which ignores all calls made to it which may fail in a document only setting.
+ * This is used by the search definition parser when it is requested to parse documents only,
+ * to avoid having to check for this in every method which adds to the rank profile.
+ * (And why do we ever want to parse documents only? Because it is used when generating Java classes
+ * from documents, where the full application package may not be available.)
+ *
+ * @author bratseth
+ */
+public class DocumentsOnlyRankProfile extends RankProfile {
+
+ public DocumentsOnlyRankProfile(String name, Search search, RankProfileRegistry rankProfileRegistry) {
+ super(name, search, rankProfileRegistry);
+ }
+
+ @Override
+ public void setFirstPhaseRanking(String expression) {
+ // Ignore
+ }
+
+ @Override
+ public void setSecondPhaseRanking(String expression) {
+ // Ignore
+ }
+
+ @Override
+ public void addFunction(String name, List<String> arguments, String expression, boolean inline) {
+ // Ignore
+ }
+
+}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/MinimalProcessingSearchBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/MinimalProcessingSearchBuilder.java
deleted file mode 100644
index 1e8f6cb91b9..00000000000
--- a/config-model/src/main/java/com/yahoo/searchdefinition/MinimalProcessingSearchBuilder.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.yahoo.searchdefinition;
-
-import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.searchdefinition.processing.MinimalProcessing;
-import com.yahoo.vespa.model.container.search.QueryProfiles;
-
-public class MinimalProcessingSearchBuilder extends SearchBuilder {
- public MinimalProcessingSearchBuilder() {
- super();
- }
-
- @Override
- protected void process(Search search, DeployLogger deployLogger, QueryProfiles queryProfiles, boolean validate) {
- new MinimalProcessing().process(search, deployLogger, getRankProfileRegistry(), queryProfiles, validate);
- }
-}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java
index a21a613d2c8..16e494c2db1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java
@@ -522,10 +522,10 @@ public class RankProfile implements Serializable, Cloneable {
return (getInherited() != null) && getInherited().getIgnoreDefaultRankFeatures();
}
- /** Adds a function and returns it */
- public RankingExpressionFunction addFunction(String name, List<String> arguments, String expression, boolean inline) {
+ /** Adds a function */
+ public void addFunction(String name, List<String> arguments, String expression, boolean inline) {
try {
- return addFunction(new ExpressionFunction(name, arguments, parseRankingExpression(name, expression)), inline);
+ addFunction(new ExpressionFunction(name, arguments, parseRankingExpression(name, expression)), inline);
}
catch (ParseException e) {
throw new IllegalArgumentException("Could not parse function '" + name + "'", e);
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 592efcc2d85..3c2ebc058ac 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
@@ -15,7 +15,6 @@ import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.searchdefinition.parser.SDParser;
import com.yahoo.searchdefinition.parser.SimpleCharStream;
import com.yahoo.searchdefinition.parser.TokenMgrException;
-import com.yahoo.searchdefinition.processing.MinimalProcessing;
import com.yahoo.searchdefinition.processing.Processing;
import com.yahoo.vespa.documentmodel.DocumentModel;
import com.yahoo.vespa.model.container.search.QueryProfiles;
@@ -40,17 +39,25 @@ public class SearchBuilder {
private final DocumentTypeManager docTypeMgr = new DocumentTypeManager();
private List<Search> searchList = new LinkedList<>();
- private ApplicationPackage app = null;
+ private ApplicationPackage app;
private boolean isBuilt = false;
private DocumentModel model = new DocumentModel();
private final RankProfileRegistry rankProfileRegistry;
private final QueryProfileRegistry queryProfileRegistry;
+ /** True to build the document aspect only, skipping instantiation of rank profiles */
+ private final boolean documentsOnly;
+
/** For testing only */
public SearchBuilder() {
this(MockApplicationPackage.createEmpty(), new RankProfileRegistry(), new QueryProfileRegistry());
}
+ /** Used for generating documents for typed access to document fields in Java */
+ public SearchBuilder(boolean documentsOnly) {
+ this(MockApplicationPackage.createEmpty(), new RankProfileRegistry(), new QueryProfileRegistry(), documentsOnly);
+ }
+
/** For testing only */
public SearchBuilder(ApplicationPackage app) {
this(app, new RankProfileRegistry(), new QueryProfileRegistry());
@@ -69,9 +76,16 @@ public class SearchBuilder {
public SearchBuilder(ApplicationPackage app,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry) {
+ this(app, rankProfileRegistry, queryProfileRegistry, false);
+ }
+ public SearchBuilder(ApplicationPackage app,
+ RankProfileRegistry rankProfileRegistry,
+ QueryProfileRegistry queryProfileRegistry,
+ boolean documentsOnly) {
this.app = app;
this.rankProfileRegistry = rankProfileRegistry;
this.queryProfileRegistry = queryProfileRegistry;
+ this.documentsOnly = documentsOnly;
}
/**
@@ -151,7 +165,7 @@ public class SearchBuilder {
Search search;
SimpleCharStream stream = new SimpleCharStream(str);
try {
- search = new SDParser(stream, deployLogger, app, rankProfileRegistry).search(docTypeMgr, searchDefDir);
+ search = new SDParser(stream, deployLogger, app, rankProfileRegistry, documentsOnly).search(docTypeMgr, searchDefDir);
} catch (TokenMgrException e) {
throw new ParseException("Unknown symbol: " + e.getMessage());
} catch (ParseException pe) {
@@ -165,9 +179,9 @@ public class SearchBuilder {
* {@link Search} object is considered to be "raw" if it has not already been processed. This is the case for most
* programmatically constructed search objects used in unit tests.
*
- * @param rawSearch The object to import.
- * @return The name of the imported object.
- * @throws IllegalArgumentException Thrown if the given search object has already been processed.
+ * @param rawSearch the object to import.
+ * @return the name of the imported object.
+ * @throws IllegalArgumentException if the given search object has already been processed.
*/
public String importRawSearch(Search rawSearch) {
if (rawSearch.getName() == null) {
@@ -251,15 +265,15 @@ public class SearchBuilder {
* #build()} method so that subclasses can choose not to build anything.
*/
protected void process(Search search, DeployLogger deployLogger, QueryProfiles queryProfiles, boolean validate) {
- new Processing().process(search, deployLogger, rankProfileRegistry, queryProfiles, validate);
+ new Processing().process(search, deployLogger, rankProfileRegistry, queryProfiles, validate, documentsOnly);
}
/**
* Convenience method to call {@link #getSearch(String)} when there is only a single {@link Search} object
* built. This method will never return null.
*
- * @return The build object.
- * @throws IllegalStateException Thrown if there is not exactly one search.
+ * @return the built object
+ * @throws IllegalStateException if there is not exactly one search.
*/
public Search getSearch() {
if ( ! isBuilt) throw new IllegalStateException("Searches not built.");
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
index cf123d0f7c1..fefb54a7fe3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
@@ -27,7 +27,7 @@ public class AddAttributeTransformToSummaryOfImportedFields extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
search.allImportedFields()
.flatMap(this::getSummaryFieldsForImportedField)
.forEach(AddAttributeTransformToSummaryOfImportedFields::setAttributeTransform);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
index e0d32ea8ccd..803a6c5ab40 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
@@ -26,7 +26,7 @@ public class AddExtraFieldsToDocument extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
SDDocumentType document = search.getDocument();
if (document != null) {
for (Field field : search.extraFieldList()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java
index 9ec596792fa..94589d94255 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java
@@ -20,7 +20,7 @@ public class AttributeProperties extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
String fieldName = field.getName();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java
index a95f4264dc6..23257e5eafd 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java
@@ -23,7 +23,7 @@ public class AttributesImplicitWord extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (fieldImplicitlyWordMatch(field)) {
field.getMatching().setType(Matching.Type.WORD);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java
index a3c4c97cf31..b9be30e8485 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java
@@ -22,7 +22,7 @@ public class Bolding extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
for (SummaryField summary : field.getSummaryFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java
index 37d60c1d32e..a0c4c8adb2d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java
@@ -10,6 +10,7 @@ import com.yahoo.vespa.model.container.search.QueryProfiles;
/**
* Adds field sets for 1) fields defined inside document type 2) fields inside search but outside document
+ *
* @author Vegard Havdal
*/
public class BuiltInFieldSets extends Processor {
@@ -23,7 +24,7 @@ public class BuiltInFieldSets extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
addDocumentFieldSet();
addSearchFieldSet();
// "Hook" the field sets on search onto the document types, since we will include them
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java
index d7b688be203..ad862ef767f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java
@@ -38,7 +38,7 @@ public class CreatePositionZCurve extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
DataType fieldType = field.getDataType();
if ( ! isSupportedPositionType(fieldType)) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DeprecateAttributePrefetch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DeprecateAttributePrefetch.java
index 7cc9b4e9b52..b34db6febd5 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DeprecateAttributePrefetch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DeprecateAttributePrefetch.java
@@ -15,7 +15,7 @@ public class DeprecateAttributePrefetch extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java
index 861ebad7085..076161a8584 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java
@@ -23,7 +23,7 @@ public class DisallowComplexMapAndWsetKeyTypes extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
// TODO also traverse struct types to search for bad map or wset types there. Do this after document manager is fixed, do
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java
index 6b78da2146b..029892cba1c 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java
@@ -18,8 +18,9 @@ public class DiversitySettingsValidator extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
+ if (documentsOnly) return;
for (RankProfile rankProfile : rankProfileRegistry.rankProfilesOf(search)) {
if (rankProfile.getMatchPhaseSettings() != null && rankProfile.getMatchPhaseSettings().getDiversity() != null) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java
index 59bc3dc66f4..a7c0ebd4a07 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java
@@ -26,7 +26,7 @@ public class ExactMatch extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
Matching.Type matching = field.getMatching().getType();
if (matching.equals(Matching.Type.EXACT) || matching.equals(Matching.Type.WORD)) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java
index 9cfac625da5..cd33e4434e7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java
@@ -21,7 +21,7 @@ public class FastAccessValidator extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
String invalidAttributes = search.allFields()
@@ -29,7 +29,7 @@ public class FastAccessValidator extends Processor {
.filter(FastAccessValidator::isIncompatibleAttribute)
.map(Attribute::getName)
.collect(Collectors.joining(", "));
- if (!invalidAttributes.isEmpty()) {
+ if ( ! invalidAttributes.isEmpty()) {
throw new IllegalArgumentException(
String.format(
"For search '%s': The following attributes have a type that is incompatible with fast-access: %s. " +
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetValidity.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetValidity.java
index 15c11589245..4ef9a9733d5 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetValidity.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetValidity.java
@@ -24,7 +24,7 @@ public class FieldSetValidity extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (FieldSet fieldSet : search.fieldSets().userFieldSets().values()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java
index 0c75314ffa2..adb8ab62aab 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java
@@ -26,7 +26,9 @@ public class FilterFieldNames extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
+ if (documentsOnly) return;
+
for (SDField f : search.allConcreteFields()) {
if (f.getRanking().isFilter()) {
filterField(f.getName());
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java
index b51524b7e62..1f795458875 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java
@@ -28,7 +28,7 @@ public class ImplicitSummaries extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
DocumentSummary defaultSummary = search.getSummary("default");
if (defaultSummary == null) {
defaultSummary = new DocumentSummary("default");
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java
index 7464f574255..0d99c698aca 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java
@@ -21,7 +21,7 @@ public class ImplicitSummaryFields extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (DocumentSummary docsum : search.getSummaries().values()) {
addField(docsum, new SummaryField("rankfeatures", DataType.STRING, SummaryTransform.RANKFEATURES), validate);
addField(docsum, new SummaryField("summaryfeatures", DataType.STRING, SummaryTransform.SUMMARYFEATURES), validate);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
index 9f03cdf4b5e..a3efd086c6a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
@@ -33,7 +33,7 @@ public class ImportedFieldsResolver extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
search.temporaryImportedFields().get().fields().forEach((name, field) -> resolveImportedField(field, validate));
search.setImportedFields(new ImportedFields(importedFields));
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java
index 018183b91d8..210a8e7009c 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java
@@ -23,7 +23,7 @@ public class IndexFieldNames extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexSettingsNonFieldNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexSettingsNonFieldNames.java
index 0740029de90..41355a76f47 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexSettingsNonFieldNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexSettingsNonFieldNames.java
@@ -24,7 +24,7 @@ public class IndexSettingsNonFieldNames extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java
index 419268468c2..aeab2bb6638 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java
@@ -27,7 +27,7 @@ public class IndexingInputs extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
ScriptExpression script = field.getIndexingScript();
if (script == null) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
index 6f04184c512..11d69bf6c75 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
@@ -29,7 +29,7 @@ public class IndexingOutputs extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
ScriptExpression script = field.getIndexingScript();
if (script == null) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java
index b73151768fd..27520647e3b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java
@@ -25,7 +25,7 @@ public class IndexingValidation extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
VerificationContext context = new VerificationContext(new MyAdapter(search));
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java
index f3907ae68cb..72777b7dfb4 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java
@@ -22,7 +22,7 @@ public class IndexingValues extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (Field field : search.getDocument().fieldSet()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java
index c119dc2660b..baaf145dbce 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java
@@ -30,7 +30,7 @@ public class IntegerIndex2Attribute extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.doesIndexing() && field.getDataType().getPrimitiveType() instanceof NumericDataType) {
if (field.getIndex(field.getName()) != null
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java
index 507a0e87cff..fe94ac9849f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java
@@ -31,7 +31,7 @@ public class LiteralBoost extends Processor {
/** Adds extra search fields and indices to express literal boosts */
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
checkRankModifierRankType(search);
addLiteralBoostsToFields(search);
reduceFieldLiteralBoosts(search);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java
index f853b99bbb2..0daf7265daa 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java
@@ -25,7 +25,7 @@ public class MakeAliases extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
List<String> usedAliases = new ArrayList<>();
for (SDField field : search.allConcreteFields()) {
for (Map.Entry<String, String> e : field.getAliasToName().entrySet()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java
index 2c43a65da99..6f67c22d9d2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java
@@ -34,7 +34,7 @@ public class MakeDefaultSummaryTheSuperSet extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
DocumentSummary defaultSummary=search.getSummary("default");
for (SummaryField summaryField : search.getUniqueNamedSummaryFields().values() ) {
if (defaultSummary.getSummaryField(summaryField.getName()) != null) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java
index fe584fa41c0..ff8a5c2eb0b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java
@@ -30,7 +30,7 @@ public class MatchConsistency extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
Map<String, Matching.Type> types = new HashMap<>();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java
index 479384e09ef..b1728b9bd89 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java
@@ -20,8 +20,9 @@ public class MatchPhaseSettingsValidator extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
+ if (documentsOnly) return;
for (RankProfile rankProfile : rankProfileRegistry.rankProfilesOf(search)) {
RankProfile.MatchPhaseSettings settings = rankProfile.getMatchPhaseSettings();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MinimalProcessing.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MinimalProcessing.java
deleted file mode 100644
index 0fee844ecbc..00000000000
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MinimalProcessing.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.yahoo.searchdefinition.processing;
-
-import java.util.Collection;
-
-public class MinimalProcessing extends Processing {
- @Override
- protected Collection<ProcessorFactory> createProcessorFactories() {
- return minimalSetOfProcessors();
- }
-}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java
index 45e018f8fc3..a52a8ab74e6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java
@@ -31,7 +31,7 @@ public class MultifieldIndexHarmonizer extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
populateIndexToFields(search);
resolveAllConflicts(search);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java
index 9bcb3929b3d..4d8f0032a78 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java
@@ -15,12 +15,12 @@ public class MutableAttributes extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
- if (!field.isExtraField() && field.getAttributes().containsKey(field.getName())) {
+ if ( ! field.isExtraField() && field.getAttributes().containsKey(field.getName())) {
if (field.getAttributes().get(field.getName()).isMutable()) {
throw new IllegalArgumentException("Field '" + field.getName() + "' in '" + search.getDocument().getName() +
- "' can not be marked mutable as it is inside the document clause.");
+ "' can not be marked mutable as it is inside the document clause.");
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java
index cdfba54ee5a..3f3fc11380b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java
@@ -26,7 +26,7 @@ public class NGramMatch extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.getMatching().getType().equals(Matching.Type.GRAM))
implementGramMatch(search, field, validate);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java
index c89c709ffbf..8f2a29abcb6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java
@@ -22,7 +22,7 @@ public class OptimizeIlscript extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
ScriptExpression script = field.getIndexingScript();
if (script == null) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java
index 3583c4a0162..79f19efe422 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java
@@ -33,7 +33,7 @@ public class PredicateProcessor extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.getDataType() == DataType.PREDICATE) {
if (validate && field.doesIndexing()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
index d92979f3ae4..8c8c32389e2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
@@ -20,7 +20,7 @@ import java.util.List;
*/
public class Processing {
- protected Collection<ProcessorFactory> minimalSetOfProcessors() {
+ private Collection<ProcessorFactory> processors() {
return Arrays.asList(
SearchMustHaveDocument::new,
UrlFieldValidator::new,
@@ -74,24 +74,13 @@ public class Processing {
RankProfileTypeSettingsProcessor::new,
ReferenceFieldsProcessor::new,
FastAccessValidator::new,
- ReservedFunctionNames::new);
- }
-
- private Collection<ProcessorFactory> extendedSetOfProcessors() {
- return Arrays.asList(
+ ReservedFunctionNames::new,
RankingExpressionTypeValidator::new,
-
- // These should be last.
+ // These should be last:
IndexingValidation::new,
IndexingValues::new);
}
- protected Collection<ProcessorFactory> createProcessorFactories() {
- List<ProcessorFactory> processorFactories = new ArrayList<>(minimalSetOfProcessors());
- processorFactories.addAll(extendedSetOfProcessors());
- return processorFactories;
- }
-
/**
* Runs all search processors on the given {@link Search} object. These will modify the search object, <b>possibly
* exchanging it with another</b>, as well as its document types.
@@ -102,17 +91,17 @@ public class Processing {
* @param queryProfiles The query profiles contained in the application this search is part of.
*/
public void process(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry,
- QueryProfiles queryProfiles, boolean validate)
- {
- Collection<ProcessorFactory> factories = createProcessorFactories();
+ QueryProfiles queryProfiles, boolean validate, boolean documentsOnly) {
+ Collection<ProcessorFactory> factories = processors();
search.process();
factories.stream()
.map(factory -> factory.create(search, deployLogger, rankProfileRegistry, queryProfiles))
- .forEach(processor -> processor.process(validate));
+ .forEach(processor -> processor.process(validate, documentsOnly));
}
@FunctionalInterface
public interface ProcessorFactory {
Processor create(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles);
}
+
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java
index b938e40d9a2..6bfd0ef29ea 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java
@@ -53,8 +53,10 @@ public abstract class Processor {
* @param validate true to throw exceptions on validation errors, false to make the best possible effort
* at completing processing without throwing an exception.
* If we are not validating, emitting warnings have no effect and can (but must not) be skipped.
+ * @param documentsOnly true to skip processing (including validation, regardless of the validate setting)
+ * of aspects not relating to document definitions (e.g rank profiles)
*/
- public abstract void process(boolean validate);
+ public abstract void process(boolean validate, boolean documentsOnly);
/**
* Convenience method for adding a no-strings-attached implementation field for a regular field
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeValidator.java
index b3fe8ec36f6..102d1910360 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeValidator.java
@@ -33,8 +33,9 @@ public class RankingExpressionTypeValidator extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
+ if (documentsOnly) return;
for (RankProfile profile : rankProfileRegistry.rankProfilesOf(search)) {
try {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java
index 76afcd5d520..0418538922b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java
@@ -28,7 +28,7 @@ public class ReferenceFieldsProcessor extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
clearSummaryAttributeAspectForConcreteFields();
clearSummaryAttributeAspectForExplicitSummaryFields();
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java
index f2aa31bb9c3..805cbaced0f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java
@@ -28,7 +28,7 @@ public class ReservedDocumentNames extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
String docName = search.getDocument().getName();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java
index 8aa8ff56756..d7099215f17 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java
@@ -27,13 +27,14 @@ public class ReservedFunctionNames extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
+ if (documentsOnly) return;
for (RankProfile rp : rankProfileRegistry.all()) {
for (String functionName : rp.getFunctions().keySet()) {
if (reservedNames.contains(functionName)) {
- deployLogger.log(Level.WARNING, "Funcion '" + functionName + "' " +
+ deployLogger.log(Level.WARNING, "Function '" + functionName + "' " +
"in rank profile '" + rp.getName() + "' " +
"has a reserved name. This might mean that the function shadows " +
"the built-in function with the same name."
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java
index 403de1253b4..2d8eaff7762 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java
@@ -19,7 +19,7 @@ public class SearchMustHaveDocument extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
if (search.getDocument() == null)
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetLanguage.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetLanguage.java
index a0c884d25f9..8a4795c4dd2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetLanguage.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetLanguage.java
@@ -24,7 +24,8 @@ public class SetLanguage extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
+ if ( ! validate) return;
List<String> textFieldsWithoutLanguage = new ArrayList<>();
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java
index a19ea8d7068..715828f808a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java
@@ -20,7 +20,7 @@ public class SetRankTypeEmptyOnFilters extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.getRanking().isFilter()) {
field.setRankType(RankType.EMPTY);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java
index 6426c724a07..defcf761649 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java
@@ -21,7 +21,7 @@ public class SortingSettings extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java
index d56b0272f06..e133f88f45c 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java
@@ -16,7 +16,7 @@ public class StringSettingsOnNonStringFields extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java
index a952d3732b3..d2c4968ca26 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java
@@ -26,7 +26,7 @@ public class SummaryConsistency extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (DocumentSummary summary : search.getSummaries().values()) {
if (summary.getName().equals("default")) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java
index 647a433f201..b8d170c07f6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java
@@ -26,7 +26,7 @@ public class SummaryDynamicStructsArrays extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
index 7bcbd9a267c..9b51c7c473e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
@@ -22,7 +22,7 @@ public class SummaryFieldsMustHaveValidSource extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (DocumentSummary summary : search.getSummaries().values()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java
index 23569cf39ae..678d5324e38 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java
@@ -26,7 +26,7 @@ public class SummaryNamesFieldCollisions extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
Map<String, Pair<String, String>> fieldToClassAndSource = new HashMap<>();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java
index 177fc7f2326..79b7a6067b9 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java
@@ -25,7 +25,7 @@ public class TagType extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.getDataType() instanceof WeightedSetDataType && ((WeightedSetDataType)field.getDataType()).isTag())
implementTagType(field);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java
index 08571168336..8e54d7c00d6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java
@@ -22,7 +22,7 @@ public class TensorFieldProcessor extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java
index 645ed5121ea..74f30d6a730 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java
@@ -34,7 +34,7 @@ public class TextMatch extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.getMatching().getType() != Matching.Type.TEXT) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java
index ac376982cfa..d81fdf70d20 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java
@@ -28,7 +28,7 @@ public class UriHack extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if (field.doesIndexing()) {
DataType fieldType = field.getDataType();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java
index ed813b42fff..c6b83349691 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java
@@ -18,7 +18,7 @@ public class UrlFieldValidator extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
for (SDField field : search.allConcreteFields()) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java
index 54ad9f13f6f..21b7f1d2675 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java
@@ -28,7 +28,7 @@ public class ValidateFieldTypes extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
String searchName = search.getName();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java
index a0b204a25f2..408d60e1cff 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java
@@ -21,7 +21,7 @@ public class ValidateFieldWithIndexSettingsCreatesIndex extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
if ( ! validate) return;
Matching defaultMatching = new Matching();
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java
index 892bcdad12c..13fe3f24d69 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java
@@ -25,7 +25,7 @@ public class WordMatch extends Processor {
super(search, deployLogger, rankProfileRegistry, queryProfiles);
}
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
for (SDField field : search.allConcreteFields()) {
if ( ! field.getMatching().getType().equals(Matching.Type.WORD)) continue;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java
index cc1638347f6..ec4cbdfe58b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java
@@ -22,7 +22,7 @@ import java.util.Map;
import java.util.Optional;
/**
- * Class that processes a search instance and sets type settings on all rank profiles.
+ * This processes a search instance and sets type settings on all rank profiles.
*
* Currently, type settings are limited to the type of tensor attribute fields and tensor query features.
*
@@ -35,7 +35,9 @@ public class RankProfileTypeSettingsProcessor extends Processor {
}
@Override
- public void process(boolean validate) {
+ public void process(boolean validate, boolean documentsOnly) {
+ if (documentsOnly) return;
+
processAttributeFields();
processImportedFields();
processQueryProfileTypes();
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj
index 391010fdf33..813d1d47533 100644
--- a/config-model/src/main/javacc/SDParser.jj
+++ b/config-model/src/main/javacc/SDParser.jj
@@ -34,6 +34,7 @@ import com.yahoo.searchdefinition.document.annotation.TemporaryAnnotationReferen
import com.yahoo.searchdefinition.RankingConstant;
import com.yahoo.searchdefinition.Index;
import com.yahoo.searchdefinition.RankProfile;
+import com.yahoo.searchdefinition.DocumentsOnlyRankProfile;
import com.yahoo.searchdefinition.DefaultRankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.RankProfile.MatchPhaseSettings;
@@ -75,6 +76,7 @@ public class SDParser {
private ApplicationPackage app;
private DeployLogger deployLogger;
private RankProfileRegistry rankProfileRegistry;
+ private boolean documentsOnly;
/** For testing only */
public SDParser(String input, DeployLogger deployLogger) {
@@ -83,17 +85,24 @@ public class SDParser {
/** For testing only */
public SDParser(SimpleCharStream stream, DeployLogger deployLogger) {
- this(stream, deployLogger, MockApplicationPackage.createEmpty(), new RankProfileRegistry());
+ this(stream, deployLogger, MockApplicationPackage.createEmpty(), new RankProfileRegistry(), false);
}
+ /**
+ * Creates a parser
+ *
+ * @param documentsOnly true to only parse the document aspect of a search definition (e.g skip rank profiles)
+ */
public SDParser(SimpleCharStream stream,
DeployLogger deployLogger,
ApplicationPackage applicationPackage,
- RankProfileRegistry rankProfileRegistry) {
+ RankProfileRegistry rankProfileRegistry,
+ boolean documentsOnly) {
this(stream);
this.deployLogger = deployLogger;
this.app = applicationPackage;
this.rankProfileRegistry = rankProfileRegistry;
+ this.documentsOnly = documentsOnly;
}
/**
@@ -1806,6 +1815,7 @@ void rankingConstant(Search search) :
}
lbrace() (rankingConstantItem(constant) (<NL>)*)+ <RBRACE> )
{
+ if (documentsOnly) return;
search.rankingConstants().add(constant);
}
}
@@ -1861,7 +1871,10 @@ void rankProfile(Search search) :
{
( <RANKPROFILE> name = identifier()
{
- if ("default".equals(name)) {
+ if (documentsOnly) {
+ profile = new DocumentsOnlyRankProfile(name, search, rankProfileRegistry);
+ }
+ else if ("default".equals(name)) {
profile = rankProfileRegistry.get(search, "default");
} else {
profile = new RankProfile(name, search, rankProfileRegistry);
@@ -1870,6 +1883,7 @@ void rankProfile(Search search) :
[inheritsRankProfile(profile)]
lbrace() (rankProfileItem(profile) (<NL>)*)* <RBRACE> )
{
+ if (documentsOnly) return;
rankProfileRegistry.add(profile);
}
}
@@ -1912,7 +1926,8 @@ void inheritsRankProfile(RankProfile profile) :
String str;
}
{
- <INHERITS> str = identifier() { profile.setInherited(str); }
+ <INHERITS> str = identifier()
+ { profile.setInherited(str); }
}
/**
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java
index 8cdfdd51637..82c03c02f61 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java
@@ -34,20 +34,19 @@ public class SearchImporterTestCase extends SearchDefinitionTestCase {
assertEquals("simple",search.getName());
assertTrue(search.hasDocument());
- SDDocumentType document=search.getDocument();
- assertEquals("simple",document.getName());
- assertEquals(12,document.getFieldCount());
+ SDDocumentType document = search.getDocument();
+ assertEquals("simple", document.getName());
+ assertEquals(12, document.getFieldCount());
SDField field;
Attribute attribute;
- new MakeAliases(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles()).process(true);
+ new MakeAliases(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles()).process(true, false);
// First field
field=(SDField) document.getField("title");
assertEquals(DataType.STRING,field.getDataType());
- assertEquals("{ summary | index; }",
- field.getIndexingScript().toString());
+ assertEquals("{ summary | index; }", field.getIndexingScript().toString());
assertTrue(!search.getIndex("default").isPrefix());
assertTrue(search.getIndex("title").isPrefix());
Iterator<String> titleAliases=search.getIndex("title").aliasIterator();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
index 3ef8591d203..f87a26c6f79 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
@@ -31,7 +31,7 @@ public class IdTestCase extends AbstractExportingTestCase {
uri.parseIndexingScript("{ summary | index }");
document.addField(uri);
- new Processing().process(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), true);
+ new Processing().process(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), true, false);
assertNull(document.getField("uri"));
assertNull(document.getField("Uri"));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
index fad80164135..2bae285301c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
@@ -41,7 +41,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
rankProfileRegistry.add(other);
other.addRankSetting(new RankProfile.RankSetting("a", RankProfile.RankSetting.Type.LITERALBOOST, 333));
- new Processing().process(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles(), true);
+ new Processing().process(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles(), true, false);
DerivedConfiguration derived=new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(), new ImportedModels());
// Check attribute fields
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
index 9d19d4b154c..ba19a8312f6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
@@ -69,14 +69,14 @@ public class SummaryMapTestCase extends SearchDefinitionTestCase {
assertTrue(!transforms.hasNext());
}
@Test
- public void testPositionDeriving() throws IOException, ParseException {
+ public void testPositionDeriving() {
Search search = new Search("store", null);
SDDocumentType document = new SDDocumentType("store");
search.addDocument(document);
String fieldName = "location";
SDField field = document.addField(fieldName, PositionDataType.INSTANCE);
field.parseIndexingScript("{ attribute | summary }");
- new Processing().process(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), true);
+ new Processing().process(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), true, false);
SummaryMap summaryMap = new SummaryMap(search, new Summaries(search, new BaseDeployLogger()));
Iterator transforms = summaryMap.resultTransformIterator();
@@ -141,7 +141,7 @@ public class SummaryMapTestCase extends SearchDefinitionTestCase {
}
@Test
- public void testFailOnSummaryFieldSourceCollision() throws IOException, ParseException {
+ public void testFailOnSummaryFieldSourceCollision() {
try {
Search search = SearchBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd");
} catch (Exception e) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
index 17cc9aaae4c..8941b07101d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
@@ -33,7 +33,7 @@ public class TypeConversionTestCase extends SearchDefinitionTestCase {
a.parseIndexingScript("{ index }");
document.addField(a);
- new Processing().process(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles(), true);
+ new Processing().process(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles(), true, false);
DerivedConfiguration derived = new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(), new ImportedModels());
IndexInfo indexInfo = derived.getIndexInfo();
assertFalse(indexInfo.hasCommand("default", "compact-to-term"));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
index a0556a156b5..48adc0eefc5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
@@ -36,7 +36,7 @@ public class AddAttributeTransformToSummaryOfImportedFieldsTest {
AddAttributeTransformToSummaryOfImportedFields processor = new AddAttributeTransformToSummaryOfImportedFields(
search,null,null,null);
- processor.process(true);
+ processor.process(true, false);
SummaryField summaryField = search.getSummaries().get(SUMMARY_NAME).getSummaryField(IMPORTED_FIELD_NAME);
SummaryTransform actualTransform = summaryField.getTransform();
assertEquals(SummaryTransform.ATTRIBUTE, actualTransform);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributePropertiesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributePropertiesTestCase.java
index 8f1cc9c3de8..3a0fedfd550 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributePropertiesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributePropertiesTestCase.java
@@ -24,7 +24,7 @@ public class AttributePropertiesTestCase extends SearchDefinitionTestCase {
public void testInvalidAttributeProperties() throws IOException, ParseException {
try {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/attributeproperties1.sd");
- new AttributeProperties(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
+ new AttributeProperties(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
fail("attribute property should not be set");
} catch (RuntimeException e) {
// empty
@@ -34,7 +34,7 @@ public class AttributePropertiesTestCase extends SearchDefinitionTestCase {
@Test
public void testValidAttributeProperties() throws IOException, ParseException {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/attributeproperties2.sd");
- new AttributeProperties(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
+ new AttributeProperties(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
index 4dee939e3da..1ab8b054cb7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
@@ -24,7 +24,7 @@ public class BoldingTestCase extends SearchDefinitionTestCase {
public void testBoldingNonString() throws IOException, ParseException {
try {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/processing/boldnonstring.sd");
- new Bolding(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
+ new Bolding(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
fail();
} catch (IllegalArgumentException e) {
assertTrue(e.getMessage().contains("'bolding: on' for non-text field"));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java
index 7230f176048..de08bf66548 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java
@@ -188,7 +188,7 @@ public class ImportedFieldsResolverTestCase {
private static ImportedFields resolve(Search search) {
assertNotNull(search.temporaryImportedFields().get());
assertFalse(search.importedFields().isPresent());
- new ImportedFieldsResolver(search, null, null, null).process(true);
+ new ImportedFieldsResolver(search, null, null, null).process(true, false);
assertFalse(search.temporaryImportedFields().isPresent());
assertNotNull(search.importedFields().get());
return search.importedFields().get();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
index 2af3477fa62..e078d91f248 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
@@ -155,7 +155,7 @@ public class IndexingScriptRewriterTestCase extends SearchDefinitionTestCase {
sdoc.addField(unprocessedField);
Search search = new Search("test", null);
search.addDocument(sdoc);
- new Processing().process(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), true);
+ new Processing().process(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), true, false);
return unprocessedField.getIndexingScript();
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
index 1e0270f293d..29bba224f46 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
@@ -19,11 +19,12 @@ import static org.junit.Assert.assertTrue;
* @author baldersheim
*/
public class IntegerIndex2AttributeTestCase extends SearchDefinitionTestCase {
+
@Test
public void testIntegerIndex2Attribute() throws IOException, ParseException {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/integerindex2attribute.sd");
search.process();
- new IntegerIndex2Attribute(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
+ new IntegerIndex2Attribute(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
SDField f;
f = search.getConcreteField("s1");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
index 85bee61c1b4..d0c1bf8b0ca 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
@@ -12,6 +12,7 @@ import java.io.IOException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
public class SummaryFieldsMustHaveValidSourceTestCase extends SearchDefinitionTestCase {
@@ -20,41 +21,44 @@ public class SummaryFieldsMustHaveValidSourceTestCase extends SearchDefinitionTe
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/invalidsummarysource.sd");
search.process();
try {
- new SummaryFieldsMustHaveValidSource(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
- assertTrue("This should throw and never get here", false);
+ new SummaryFieldsMustHaveValidSource(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
+ fail("This should throw and never get here");
} catch (IllegalArgumentException e) {
assertEquals("For search 'invalidsummarysource', summary class 'baz', summary field 'cox': there is no valid source 'nonexistingfield'.", e.getMessage());
}
}
+
@Test
public void requireThatInvalidImplicitSourceIsCaught() throws IOException, ParseException {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/invalidimplicitsummarysource.sd");
search.process();
try {
- new SummaryFieldsMustHaveValidSource(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
- assertTrue("This should throw and never get here", false);
+ new SummaryFieldsMustHaveValidSource(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
+ fail("This should throw and never get here");
} catch (IllegalArgumentException e) {
assertEquals("For search 'invalidsummarysource', summary class 'baz', summary field 'cox': there is no valid source 'cox'.", e.getMessage());
}
}
+
@Test
public void requireThatInvalidSelfReferingSingleSource() throws IOException, ParseException {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/invalidselfreferringsummary.sd");
search.process();
try {
- new SummaryFieldsMustHaveValidSource(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true);
- assertTrue("This should throw and never get here", false);
+ new SummaryFieldsMustHaveValidSource(search, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
+ fail("This should throw and never get here");
} catch (IllegalArgumentException e) {
assertEquals("For search 'invalidselfreferringsummary', summary class 'withid', summary field 'w': there is no valid source 'w'.", e.getMessage());
}
}
+
@Test
public void requireThatDocumentIdIsAllowedToPass() throws IOException, ParseException {
Search search = UnprocessingSearchBuilder.buildUnprocessedFromFile("src/test/examples/documentidinsummary.sd");
search.process();
BaseDeployLogger deployLogger = new BaseDeployLogger();
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- new SummaryFieldsMustHaveValidSource(search, deployLogger, rankProfileRegistry, new QueryProfiles()).process(true);
+ new SummaryFieldsMustHaveValidSource(search, deployLogger, rankProfileRegistry, new QueryProfiles()).process(true, false);
assertEquals("documentid", search.getSummary("withid").getSummaryField("w").getSingleSource());
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
index ab3bb113727..d0b6524a7e1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
@@ -40,7 +40,7 @@ public class ValidateFieldTypesTest {
exceptionRule.expectMessage(
"For search '" + DOCUMENT_NAME + "', field '" + IMPORTED_FIELD_NAME + "': Incompatible types. " +
"Expected int for summary field '" + IMPORTED_FIELD_NAME + "', got string.");
- validator.process(true);
+ validator.process(true, false);
}
private static Search createSearchWithDocument(String documentName) {
diff --git a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
index b7c955bd83b..d27352b8ea7 100644
--- a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
+++ b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
@@ -7,12 +7,9 @@ import com.yahoo.document.annotation.AnnotationReferenceDataType;
import com.yahoo.document.annotation.AnnotationType;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.documentmodel.VespaDocumentType;
-import com.yahoo.searchdefinition.MinimalProcessingSearchBuilder;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SearchBuilder;
-import com.yahoo.searchdefinition.UnprocessingSearchBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
-import com.yahoo.tensor.TensorType;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -80,10 +77,10 @@ public class DocumentGenMojo extends AbstractMojo {
void execute(File sdDir, File outputDir, String packageName) throws MojoFailureException {
if ("".equals(packageName)) throw new IllegalArgumentException("You may not use empty package for generated types.");
- searches = new HashMap<String, Search>();
- docTypes = new HashMap<String, String>();
- structTypes = new HashMap<String, String>();
- annotationTypes = new HashMap<String, String>();
+ searches = new HashMap<>();
+ docTypes = new HashMap<>();
+ structTypes = new HashMap<>();
+ annotationTypes = new HashMap<>();
outputDir.mkdirs();
SearchBuilder builder = buildSearches(sdDir);
@@ -111,7 +108,7 @@ public class DocumentGenMojo extends AbstractMojo {
public boolean accept(File dir, String name) {
return name.endsWith(".sd");
}});
- SearchBuilder builder = new MinimalProcessingSearchBuilder();
+ SearchBuilder builder = new SearchBuilder(true);
for (File f : sdFiles) {
try {
long modTime = f.lastModified();