summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java15
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java10
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocumentSummary.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java6
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedFieldSet.java12
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedIndex.java31
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedRankProfile.java14
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSchema.java26
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSorting.java7
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedStruct.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java2
-rw-r--r--config-model/src/main/javacc/IntermediateParser.jj30
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateCollectionTestCase.java24
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java2
14 files changed, 108 insertions, 79 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java
index 42cd77729ba..b5dabcdb608 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedAttribute.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.parser;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -21,7 +21,7 @@ class ParsedAttribute extends ParsedBlock {
private boolean enableHuge = false;
private boolean enableMutable = false;
private boolean enablePaged = false;
- private final Map<String, String> aliases = new HashMap<>();
+ private final Map<String, String> aliases = new LinkedHashMap<>();
private ParsedSorting sortSettings = null;
private String distanceMetric = null;
@@ -45,10 +45,17 @@ class ParsedAttribute extends ParsedBlock {
verifyThat(! aliases.containsKey(to), "already has alias", to);
aliases.put(to, from);
}
+
void setDistanceMetric(String value) {
verifyThat(distanceMetric == null, "already has distance-metric", distanceMetric);
this.distanceMetric = value;
}
+
+ ParsedSorting sortInfo() {
+ if (sortSettings == null) sortSettings = new ParsedSorting(name(), "attribute.sorting");
+ return this.sortSettings;
+ }
+
void setEnableBitVectors(boolean value) { this.enableBitVectors = value; }
void setEnableOnlyBitVector(boolean value) { this.enableOnlyBitVector = value; }
void setFastAccess(boolean value) { this.enableFastAccess = true; }
@@ -56,8 +63,4 @@ class ParsedAttribute extends ParsedBlock {
void setHuge(boolean value) { this.enableHuge = true; }
void setMutable(boolean value) { this.enableMutable = true; }
void setPaged(boolean value) { this.enablePaged = true; }
- ParsedSorting sortInfo() {
- if (sortSettings == null) sortSettings = new ParsedSorting(name(), "attribute.sorting");
- return this.sortSettings;
- }
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java
index dd61124c3a7..065b66e22b1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java
@@ -4,7 +4,7 @@ package com.yahoo.searchdefinition.parser;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -17,10 +17,10 @@ import java.util.Optional;
**/
public class ParsedDocument extends ParsedBlock {
private final List<String> inherited = new ArrayList<>();
- private final Map<String, ParsedDocument> resolvedInherits = new HashMap();
- private final Map<String, ParsedField> docFields = new HashMap<>();
- private final Map<String, ParsedStruct> docStructs = new HashMap<>();
- private final Map<String, ParsedAnnotation> docAnnotations = new HashMap<>();
+ private final Map<String, ParsedDocument> resolvedInherits = new LinkedHashMap();
+ private final Map<String, ParsedField> docFields = new LinkedHashMap<>();
+ private final Map<String, ParsedStruct> docStructs = new LinkedHashMap<>();
+ private final Map<String, ParsedAnnotation> docAnnotations = new LinkedHashMap<>();
public ParsedDocument(String name) {
super(name, "document");
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocumentSummary.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocumentSummary.java
index 65cfa433dc0..08f4946a218 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocumentSummary.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocumentSummary.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.parser;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -17,7 +17,7 @@ class ParsedDocumentSummary extends ParsedBlock {
private boolean omitSummaryFeatures;
private boolean fromDisk;
private final List<String> inherited = new ArrayList<>();
- private final Map<String, ParsedSummaryField> fields = new HashMap<>();
+ private final Map<String, ParsedSummaryField> fields = new LinkedHashMap<>();
ParsedDocumentSummary(String name) {
super(name, "document-summary");
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java
index c2998f77b49..5ee73abc28d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java
@@ -24,7 +24,7 @@ class ParsedField extends ParsedBlock {
private boolean isLiteral = false;
private boolean isNormal = false;
private Integer weight;
- private String normalizing;
+ private String normalizing = null;
private final ParsedMatchSettings matchInfo = new ParsedMatchSettings();
private Stemming stemming = null;
private ParsedIndexingOp indexingOp = null;
@@ -59,6 +59,7 @@ class ParsedField extends ParsedBlock {
String lookupAliasedFrom(String alias) { return aliases.get(alias); }
ParsedMatchSettings matchSettings() { return this.matchInfo; }
Optional<Stemming> getStemming() { return Optional.ofNullable(stemming); }
+ Optional<String> getNormalizing() { return Optional.ofNullable(normalizing); }
Optional<ParsedIndexingOp> getIndexing() { return Optional.ofNullable(indexingOp); }
Optional<ParsedSorting> getSorting() { return Optional.ofNullable(sortSettings); }
Map<String, String> getRankTypes() { return Map.copyOf(rankTypes); }
@@ -149,6 +150,9 @@ class ParsedField extends ParsedBlock {
void addSummaryField(ParsedSummaryField summaryField) {
String fieldName = summaryField.name();
verifyThat(! summaryFields.containsKey(fieldName), "already has summary field", fieldName);
+ if (summaryField.getType() == null) {
+ summaryField.setType(getType());
+ }
summaryFields.put(fieldName, summaryField);
}
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedFieldSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedFieldSet.java
index 30597a6dc42..9103ed46631 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedFieldSet.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedFieldSet.java
@@ -2,6 +2,7 @@ package com.yahoo.searchdefinition.parser;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
/**
* This class holds the extracted information after parsing a "fieldset"
@@ -13,15 +14,22 @@ class ParsedFieldSet extends ParsedBlock {
private final List<String> fields = new ArrayList<>();
private final List<String> queryCommands = new ArrayList<>();
- private final ParsedMatchSettings matchInfo = new ParsedMatchSettings();
+ private ParsedMatchSettings matchInfo = null;
ParsedFieldSet(String name) {
super(name, "fieldset");
}
- ParsedMatchSettings matchSettings() { return this.matchInfo; }
+ ParsedMatchSettings matchSettings() {
+ if (matchInfo == null) matchInfo = new ParsedMatchSettings();
+ return this.matchInfo;
+ }
+
List<String> getQueryCommands() { return List.copyOf(queryCommands); }
List<String> getFieldNames() { return List.copyOf(fields); }
+ Optional<ParsedMatchSettings> getMatchSettings() {
+ return Optional.ofNullable(this.matchInfo);
+ }
void addField(String field) { fields.add(field); }
void addQueryCommand(String command) { queryCommands.add(command); }
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedIndex.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedIndex.java
index dfc9d911f57..a3504cd2bf7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedIndex.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedIndex.java
@@ -6,6 +6,7 @@ import com.yahoo.searchdefinition.document.Stemming;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
/**
* This class holds the extracted information after parsing an "index"
@@ -15,30 +16,30 @@ import java.util.List;
**/
class ParsedIndex extends ParsedBlock {
- private boolean enableBm25 = false;
- private boolean isPrefix = false;
- private HnswIndexParams hnswParams;
+ private Boolean enableBm25 = null;
+ private Boolean isPrefix = null;
+ private HnswIndexParams hnswParams = null;
private final List<String> aliases = new ArrayList<>();
private Stemming stemming = null;
- private Integer arity;
- private Long lowerBound;
- private Long upperBound;
- private Double densePLT;
+ private Integer arity = null;
+ private Long lowerBound = null;
+ private Long upperBound = null;
+ private Double densePLT = null;
ParsedIndex(String name) {
super(name, "index");
}
- boolean getEnableBm25() { return this.enableBm25; }
- boolean getPrefix() { return this.isPrefix; }
- HnswIndexParams getHnswIndexParams() { return this.hnswParams; }
+ Optional<Boolean> getEnableBm25() { return Optional.ofNullable(this.enableBm25); }
+ Optional<Boolean> getPrefix() { return Optional.ofNullable(this.isPrefix); }
+ Optional<HnswIndexParams> getHnswIndexParams() { return Optional.ofNullable(this.hnswParams); }
List<String> getAliases() { return List.copyOf(aliases); }
boolean hasStemming() { return stemming != null; }
- Stemming getStemming() { return stemming; }
- Integer getArity() { return this.arity; }
- Long getLowerBound() { return this.lowerBound; }
- Long getUpperBound() { return this.upperBound; }
- Double getDensePostingListThreshold() { return this.densePLT; }
+ Optional<Stemming> getStemming() { return Optional.ofNullable(stemming); }
+ Optional<Integer> getArity() { return Optional.ofNullable(this.arity); }
+ Optional<Long> getLowerBound() { return Optional.ofNullable(this.lowerBound); }
+ Optional<Long> getUpperBound() { return Optional.ofNullable(this.upperBound); }
+ Optional<Double> getDensePostingListThreshold() { return Optional.ofNullable(this.densePLT); }
void addAlias(String alias) {
aliases.add(alias);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedRankProfile.java
index ec43d7f5d06..2c9ead4a446 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedRankProfile.java
@@ -9,7 +9,7 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -42,12 +42,12 @@ class ParsedRankProfile extends ParsedBlock {
private Boolean strict = null;
private final List<MutateOperation> mutateOperations = new ArrayList<>();
private final List<String> inherited = new ArrayList<>();
- private final Map<String, Boolean> fieldsRankFilter = new HashMap<>();
- private final Map<String, Integer> fieldsRankWeight = new HashMap<>();
- private final Map<String, ParsedRankFunction> functions = new HashMap<>();
- private final Map<String, String> fieldsRankType = new HashMap<>();
- private final Map<String, List<String>> rankProperties = new HashMap<>();
- private final Map<String, Value> constants = new HashMap<>();
+ private final Map<String, Boolean> fieldsRankFilter = new LinkedHashMap<>();
+ private final Map<String, Integer> fieldsRankWeight = new LinkedHashMap<>();
+ private final Map<String, ParsedRankFunction> functions = new LinkedHashMap<>();
+ private final Map<String, String> fieldsRankType = new LinkedHashMap<>();
+ private final Map<String, List<String>> rankProperties = new LinkedHashMap<>();
+ private final Map<String, Value> constants = new LinkedHashMap<>();
ParsedRankProfile(String name) {
super(name, "rank-profile");
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSchema.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSchema.java
index a0b238f1f43..bcbf14d9398 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSchema.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSchema.java
@@ -6,7 +6,7 @@ import com.yahoo.searchdefinition.RankingConstant;
import com.yahoo.searchdefinition.document.Stemming;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -29,6 +29,7 @@ public class ParsedSchema extends ParsedBlock {
}
}
+ private boolean documentWithoutSchema = false;
private boolean rawAsBase64 = false; // TODO Vespa 8 flip default
private ParsedDocument myDocument = null;
private Stemming defaultStemming = null;
@@ -37,20 +38,21 @@ public class ParsedSchema extends ParsedBlock {
private final List<RankingConstant> rankingConstants = new ArrayList<>();
private final List<String> inherited = new ArrayList<>();
private final List<String> inheritedByDocument = new ArrayList<>();
- private final Map<String, ParsedSchema> resolvedInherits = new HashMap();
- private final Map<String, ParsedSchema> allResolvedInherits = new HashMap();
- private final Map<String, ParsedAnnotation> extraAnnotations = new HashMap<>();
- private final Map<String, ParsedDocumentSummary> docSums = new HashMap<>();
- private final Map<String, ParsedField> extraFields = new HashMap<>();
- private final Map<String, ParsedFieldSet> fieldSets = new HashMap<>();
- private final Map<String, ParsedIndex> extraIndexes = new HashMap<>();
- private final Map<String, ParsedRankProfile> rankProfiles = new HashMap<>();
- private final Map<String, ParsedStruct> extraStructs = new HashMap<>();
+ private final Map<String, ParsedSchema> resolvedInherits = new LinkedHashMap();
+ private final Map<String, ParsedSchema> allResolvedInherits = new LinkedHashMap();
+ private final Map<String, ParsedAnnotation> extraAnnotations = new LinkedHashMap<>();
+ private final Map<String, ParsedDocumentSummary> docSums = new LinkedHashMap<>();
+ private final Map<String, ParsedField> extraFields = new LinkedHashMap<>();
+ private final Map<String, ParsedFieldSet> fieldSets = new LinkedHashMap<>();
+ private final Map<String, ParsedIndex> extraIndexes = new LinkedHashMap<>();
+ private final Map<String, ParsedRankProfile> rankProfiles = new LinkedHashMap<>();
+ private final Map<String, ParsedStruct> extraStructs = new LinkedHashMap<>();
public ParsedSchema(String name) {
super(name, "schema");
}
+ boolean getDocumentWithoutSchema() { return documentWithoutSchema; }
boolean getRawAsBase64() { return rawAsBase64; }
boolean hasDocument() { return myDocument != null; }
ParsedDocument getDocument() { return myDocument; }
@@ -67,7 +69,7 @@ public class ParsedSchema extends ParsedBlock {
List<RankingConstant> getRankingConstants() { return List.copyOf(rankingConstants); }
List<String> getInherited() { return List.copyOf(inherited); }
List<String> getInheritedByDocument() { return List.copyOf(inheritedByDocument); }
- Map<String, ParsedRankProfile> getRankProfiles() { return Map.copyOf(rankProfiles); }
+ List<ParsedRankProfile> getRankProfiles() { return List.copyOf(rankProfiles.values()); }
List<ParsedSchema> getResolvedInherits() { return List.copyOf(resolvedInherits.values()); }
List<ParsedSchema> getAllResolvedInherits() { return List.copyOf(allResolvedInherits.values()); }
@@ -85,6 +87,8 @@ public class ParsedSchema extends ParsedBlock {
this.myDocument = document;
}
+ void setDocumentWithoutSchema() { this.documentWithoutSchema = true; }
+
void addDocumentSummary(ParsedDocumentSummary docsum) {
String dsName = docsum.name();
verifyThat(! docSums.containsKey(dsName), "already has document-summary", dsName);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSorting.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSorting.java
index d4686c594da..32c822bf25b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSorting.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSorting.java
@@ -1,6 +1,9 @@
package com.yahoo.searchdefinition.parser;
+import com.yahoo.searchdefinition.document.Sorting.Function;
+import com.yahoo.searchdefinition.document.Sorting.Strength;
+
import java.util.Optional;
/**
@@ -11,10 +14,6 @@ import java.util.Optional;
**/
class ParsedSorting extends ParsedBlock {
- enum Function { RAW, LOWERCASE, UCA }
-
- enum Strength { PRIMARY, SECONDARY, TERTIARY, QUATERNARY, IDENTICAL }
-
private boolean ascending = true;
private Function sortFunction = null;
private Strength sortStrength = null;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedStruct.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedStruct.java
index cc3b2425726..17b20459c9c 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedStruct.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedStruct.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.parser;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -14,7 +14,7 @@ import java.util.Map;
**/
public class ParsedStruct extends ParsedBlock {
private final List<String> inherited = new ArrayList<>();
- private final Map<String, ParsedField> fields = new HashMap<>();
+ private final Map<String, ParsedField> fields = new LinkedHashMap<>();
private String ownedBy = null;
public ParsedStruct(String name) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java
index d3e85bc1b11..3aed90a58e1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java
@@ -43,6 +43,8 @@ class ParsedType {
case "double": return Variant.BUILTIN;
case "uri": return Variant.BUILTIN;
case "predicate": return Variant.BUILTIN;
+ case "raw": return Variant.BUILTIN;
+ case "tag": return Variant.BUILTIN;
case "position": return Variant.POSITION;
}
return Variant.UNKNOWN;
diff --git a/config-model/src/main/javacc/IntermediateParser.jj b/config-model/src/main/javacc/IntermediateParser.jj
index 627d0ad601e..90260cb9895 100644
--- a/config-model/src/main/javacc/IntermediateParser.jj
+++ b/config-model/src/main/javacc/IntermediateParser.jj
@@ -34,6 +34,7 @@ import com.yahoo.searchdefinition.document.Case;
import com.yahoo.searchdefinition.document.MatchType;
import com.yahoo.searchdefinition.document.MatchAlgorithm;
import com.yahoo.searchdefinition.document.HnswIndexParams;
+import com.yahoo.searchdefinition.document.Sorting;
import com.yahoo.searchdefinition.document.Stemming;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.fieldoperation.IndexingOperation;
@@ -452,6 +453,7 @@ ParsedSchema rootDocumentItem(ParsedSchema schema) :
( doc = namedDocument() {
if (schema == null) schema = new ParsedSchema(doc.name());
schema.addDocument(doc);
+ schema.setDocumentWithoutSchema();
return schema;
} )
}
@@ -1027,7 +1029,7 @@ void weightedsetBody(ParsedType type) : { }
void rankType(ParsedField field) :
{
String typeName;
- String indexName = field.name();
+ String indexName = "";
}
{
<RANKTYPE> [indexName = identifier()] <COLON> typeName = identifier()
@@ -1085,16 +1087,16 @@ void sortingSetting(ParsedSorting sorting) :
<ASCENDING> { sorting.setAscending(); }
| <DESCENDING> { sorting.setDescending(); }
| <FUNCTION> <COLON> (
- <UCA> { sorting.setFunction(ParsedSorting.Function.UCA); }
- | <RAW> { sorting.setFunction(ParsedSorting.Function.RAW); }
- | <LOWERCASE> { sorting.setFunction(ParsedSorting.Function.LOWERCASE); }
+ <UCA> { sorting.setFunction(Sorting.Function.UCA); }
+ | <RAW> { sorting.setFunction(Sorting.Function.RAW); }
+ | <LOWERCASE> { sorting.setFunction(Sorting.Function.LOWERCASE); }
)
| <STRENGTH> <COLON> (
- <PRIMARY> { sorting.setStrength(ParsedSorting.Strength.PRIMARY); }
- | <SECONDARY> { sorting.setStrength(ParsedSorting.Strength.SECONDARY); }
- | <TERTIARY> { sorting.setStrength(ParsedSorting.Strength.TERTIARY); }
- | <QUATERNARY> { sorting.setStrength(ParsedSorting.Strength.QUATERNARY); }
- | <IDENTICAL> { sorting.setStrength(ParsedSorting.Strength.IDENTICAL); }
+ <PRIMARY> { sorting.setStrength(Sorting.Strength.PRIMARY); }
+ | <SECONDARY> { sorting.setStrength(Sorting.Strength.SECONDARY); }
+ | <TERTIARY> { sorting.setStrength(Sorting.Strength.TERTIARY); }
+ | <QUATERNARY> { sorting.setStrength(Sorting.Strength.QUATERNARY); }
+ | <IDENTICAL> { sorting.setStrength(Sorting.Strength.IDENTICAL); }
)
| <LOCALE> <COLON> locale = identifierWithDash() { sorting.setLocale(locale); }
)
@@ -1798,12 +1800,10 @@ void rankProfile(ParsedSchema schema) :
ParsedRankProfile profile;
}
{
- ( ( <MODEL> | <RANKPROFILE> ) name = identifierWithDash()
- {
- profile = new ParsedRankProfile(name);
- }
- [inheritsRankProfile(profile)]
- lbrace() (rankProfileItem(profile) (<NL>)*)* <RBRACE> )
+ ( <MODEL> | <RANKPROFILE> ) name = identifierWithDash()
+ { profile = new ParsedRankProfile(name); }
+ [inheritsRankProfile(profile)]
+ lbrace() (rankProfileItem(profile) (<NL>)*)* <RBRACE>
{
schema.addRankProfile(profile);
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateCollectionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateCollectionTestCase.java
index da5d0da146f..cd78f1faeb2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateCollectionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateCollectionTestCase.java
@@ -9,6 +9,7 @@ import java.nio.charset.StandardCharsets;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
+import java.util.List;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -79,6 +80,13 @@ public class IntermediateCollectionTestCase {
assertEquals(schema.name(), "grandparent");
}
+ ParsedRankProfile get(List<ParsedRankProfile> all, String name) {
+ for (var rp : all) {
+ if (rp.name().equals(name)) return rp;
+ }
+ return null;
+ }
+
@Test
public void can_add_extra_rank_profiles() throws Exception {
var collection = new IntermediateCollection();
@@ -92,13 +100,13 @@ public class IntermediateCollectionTestCase {
assertEquals(schema.name(), "test");
var rankProfiles = schema.getRankProfiles();
assertEquals(rankProfiles.size(), 7);
- var outside = rankProfiles.get("outside_schema1");
+ var outside = get(rankProfiles, "outside_schema1");
assertTrue(outside != null);
assertEquals(outside.name(), "outside_schema1");
var functions = outside.getFunctions();
assertEquals(functions.size(), 1);
assertEquals(functions.get(0).name(), "fo1");
- outside = rankProfiles.get("outside_schema2");
+ outside = get(rankProfiles, "outside_schema2");
assertTrue(outside != null);
assertEquals(outside.name(), "outside_schema2");
functions = outside.getFunctions();
@@ -118,17 +126,17 @@ public class IntermediateCollectionTestCase {
@Test
public void bad_parse_throws() throws Exception {
var collection = new IntermediateCollection();
- var ex = assertThrows(IllegalArgumentException.class, () ->
+ var ex = assertThrows(ParseException.class, () ->
collection.addSchemaFromFile("src/test/examples/structoutsideofdocument.sd"));
- assertTrue(ex.getMessage().startsWith("Failed parsing schema file src/test/examples/structoutsideofdocument.sd: "));
- ex = assertThrows(IllegalArgumentException.class, () ->
+ assertTrue(ex.getMessage().startsWith("Failed parsing schema from src/test/examples/structoutsideofdocument.sd: Encountered"));
+ ex = assertThrows(ParseException.class, () ->
collection.addSchemaFromReader(readerOf("src/test/examples/structoutsideofdocument.sd")));
- assertTrue(ex.getMessage().startsWith("Failed parsing schema from src/test/examples/structoutsideofdocument.sd: "));
+ assertTrue(ex.getMessage().startsWith("Failed parsing schema from src/test/examples/structoutsideofdocument.sd: Encountered"));
collection.addSchemaFromFile("src/test/derived/rankprofilemodularity/test.sd");
collection.addRankProfileFile("test", "src/test/derived/rankprofilemodularity/test/outside_schema1.profile");
- ex = assertThrows(IllegalArgumentException.class, () ->
+ ex = assertThrows(ParseException.class, () ->
collection.addRankProfileFile("test", "src/test/examples/structoutsideofdocument.sd"));
- assertTrue(ex.getMessage().startsWith("Failed parsing rank-profile from src/test/examples/structoutsideofdocument.sd: "));
+ assertTrue(ex.getMessage().startsWith("Failed parsing rank-profile from src/test/examples/structoutsideofdocument.sd: Encountered"));
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java
index cbdc8a24b5c..4e212ccd574 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java
@@ -174,7 +174,7 @@ public class IntermediateParserTestCase {
checkFileParses("src/test/derived/position_summary/position_summary.sd");
checkFileParses("src/test/derived/predicate_attribute/predicate_attribute.sd");
checkFileParses("src/test/derived/prefixexactattribute/prefixexactattribute.sd");
- checkFileParses("src/test/derived/rankingexpression/rankexpression.sd");
+ checkFileParses("src/test/derived/rankexpression/rankexpression.sd");
checkFileParses("src/test/derived/rankprofileinheritance/child.sd");
checkFileParses("src/test/derived/rankprofileinheritance/parent1.sd");
checkFileParses("src/test/derived/rankprofileinheritance/parent2.sd");