summaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-01-28 19:22:40 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-01-28 19:22:40 +0100
commitb3580975c872bb20fc6027dca0b97d6d9d022962 (patch)
tree28f2f9c54faa88b0b3155211265065d8a6c111fe /config-model/src
parent2df0c12a503a0fdff8da459618801fb5037a06f0 (diff)
Change fieldset query-command to add, not override commands
The logic in FieldSet stated that any explicit query-command will deactivate all the standard derived commands. That is inconsistent with query-command on fields, not mentioned in the doc, and will generally break things. This changes to the normal behavior where query-commands are additive.
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java12
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java5
-rw-r--r--config-model/src/main/javacc/SDParser.jj6
-rw-r--r--config-model/src/test/derived/fieldset2/index-info.cfg37
-rw-r--r--config-model/src/test/derived/fieldset2/test.sd20
-rw-r--r--config-model/src/test/derived/indexschema/index-info.cfg12
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java5
7 files changed, 79 insertions, 18 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
index 02b2a383318..032f7f58e2a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
@@ -286,16 +286,8 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
// TODO: Move this to the FieldSetSettings processor (and rename it) as that already has to look at this.
private void addFieldSetCommands(IndexInfoConfig.Indexinfo.Builder iiB, FieldSet fieldSet) {
- // Explicit query commands on the field set, overrides everything.
- if (!fieldSet.queryCommands().isEmpty()) {
- for (String qc : fieldSet.queryCommands()) {
- iiB.command(
- new IndexInfoConfig.Indexinfo.Command.Builder()
- .indexname(fieldSet.getName())
- .command(qc));
- }
- return;
- }
+ for (String qc : fieldSet.queryCommands())
+ iiB.command(new IndexInfoConfig.Indexinfo.Command.Builder().indexname(fieldSet.getName()).command(qc));
boolean anyIndexing = false;
boolean anyAttributing = false;
boolean anyLowerCasing = false;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java
index 55dedc4a1d7..22424286ef9 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java
@@ -25,10 +25,7 @@ public class FieldSet {
public FieldSet addFieldName(String field) { fieldNames.add(field); return this; }
public Set<String> getFieldNames() { return fieldNames; }
public Set<ImmutableSDField> fields() { return fields; }
-
- public Set<String> queryCommands() {
- return queryCommands;
- }
+ public Set<String> queryCommands() { return queryCommands; }
public void setMatching(Matching matching) {
this.matching = matching;
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj
index 7543e3f030c..3c09a521715 100644
--- a/config-model/src/main/javacc/SDParser.jj
+++ b/config-model/src/main/javacc/SDParser.jj
@@ -673,11 +673,11 @@ void fieldSet(Search search) :
// Apply settings after parsing since all user field items must be set first
for (Object command : queryCommands)
- search.fieldSets().userFieldSets().get(setName).queryCommands().add((String)command);
+ search.fieldSets().userFieldSets().get(setName).queryCommands().add((String)command);
for (Object setting : matchSettings) {
- ((SDField)setting).applyOperations();
- search.fieldSets().userFieldSets().get(setName).setMatching(((SDField)setting).getMatching());
+ ((SDField)setting).applyOperations();
+ search.fieldSets().userFieldSets().get(setName).setMatching(((SDField)setting).getMatching());
}
}
}
diff --git a/config-model/src/test/derived/fieldset2/index-info.cfg b/config-model/src/test/derived/fieldset2/index-info.cfg
new file mode 100644
index 00000000000..7c3c1c448db
--- /dev/null
+++ b/config-model/src/test/derived/fieldset2/index-info.cfg
@@ -0,0 +1,37 @@
+indexinfo[].name "test"
+indexinfo[].command[].indexname "sddocname"
+indexinfo[].command[].command "index"
+indexinfo[].command[].indexname "sddocname"
+indexinfo[].command[].command "word"
+indexinfo[].command[].indexname "field1"
+indexinfo[].command[].command "index"
+indexinfo[].command[].indexname "field1"
+indexinfo[].command[].command "lowercase"
+indexinfo[].command[].indexname "field1"
+indexinfo[].command[].command "stem:BEST"
+indexinfo[].command[].indexname "field1"
+indexinfo[].command[].command "normalize"
+indexinfo[].command[].indexname "field1"
+indexinfo[].command[].command "plain-tokens"
+indexinfo[].command[].indexname "field2"
+indexinfo[].command[].command "index"
+indexinfo[].command[].indexname "field2"
+indexinfo[].command[].command "lowercase"
+indexinfo[].command[].indexname "field2"
+indexinfo[].command[].command "stem:BEST"
+indexinfo[].command[].indexname "field2"
+indexinfo[].command[].command "normalize"
+indexinfo[].command[].indexname "field2"
+indexinfo[].command[].command "plain-tokens"
+indexinfo[].command[].indexname "default"
+indexinfo[].command[].command "phrase-segmenting false"
+indexinfo[].command[].indexname "default"
+indexinfo[].command[].command "lowercase"
+indexinfo[].command[].indexname "default"
+indexinfo[].command[].command "index"
+indexinfo[].command[].indexname "default"
+indexinfo[].command[].command "plain-tokens"
+indexinfo[].command[].indexname "default"
+indexinfo[].command[].command "stem:BEST"
+indexinfo[].command[].indexname "default"
+indexinfo[].command[].command "normalize"
diff --git a/config-model/src/test/derived/fieldset2/test.sd b/config-model/src/test/derived/fieldset2/test.sd
new file mode 100644
index 00000000000..7606a5d16b2
--- /dev/null
+++ b/config-model/src/test/derived/fieldset2/test.sd
@@ -0,0 +1,20 @@
+search test {
+
+ document test {
+
+ field field1 type string {
+ indexing: index
+ }
+
+ field field2 type string {
+ indexing: index
+ }
+
+ }
+
+ fieldset default {
+ fields: field1, field2
+ query-command: "phrase-segmenting false"
+ }
+
+}
diff --git a/config-model/src/test/derived/indexschema/index-info.cfg b/config-model/src/test/derived/indexschema/index-info.cfg
index 25c7e9db4b0..65818e088f5 100644
--- a/config-model/src/test/derived/indexschema/index-info.cfg
+++ b/config-model/src/test/derived/indexschema/index-info.cfg
@@ -44,9 +44,9 @@ indexinfo[].command[].command "normalize"
indexinfo[].command[].indexname "sd"
indexinfo[].command[].command "plain-tokens"
indexinfo[].command[].indexname "sd"
-indexinfo[].command[].command "literal-boost"
indexinfo[].command[].command "phrase-segmenting false"
indexinfo[].command[].indexname "sd"
+indexinfo[].command[].command "literal-boost"
indexinfo[].command[].indexname "pos.x"
indexinfo[].command[].command "index"
indexinfo[].command[].indexname "pos.x"
@@ -309,6 +309,16 @@ indexinfo[].command[].indexname "exactexplicit"
indexinfo[].command[].command "exact ARNOLD"
indexinfo[].command[].indexname "exactexplicit"
indexinfo[].command[].command "dynteaser"
+indexinfo[].command[].indexname "exactexplicit"
+indexinfo[].command[].command "lowercase"
+indexinfo[].command[].indexname "exactexplicit"
+indexinfo[].command[].command "index"
+indexinfo[].command[].indexname "exactexplicit"
+indexinfo[].command[].command "plain-tokens"
+indexinfo[].command[].indexname "exactexplicit"
+indexinfo[].command[].command "stem:BEST"
+indexinfo[].command[].indexname "exactexplicit"
+indexinfo[].command[].command "normalize"
indexinfo[].command[].indexname "exactexplicit2"
indexinfo[].command[].command "lowercase"
indexinfo[].command[].indexname "exactexplicit2"
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
index 61065cd4bcc..3fc05d789f6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
@@ -120,6 +120,11 @@ public class ExportingTestCase extends AbstractExportingTestCase {
}
@Test
+ public void testFieldSet2() throws IOException, ParseException {
+ assertCorrectDeriving("fieldset2");
+ }
+
+ @Test
public void testIndexinfoFieldsets() throws IOException, ParseException {
assertCorrectDeriving("indexinfo_fieldsets");
}