diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-23 14:01:38 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-23 14:01:38 +0100 |
commit | 2b319f08c3b399ae29e9ca1e1b47fb1c4cc28725 (patch) | |
tree | 152d3afd2ceb32892a68f398fe4e7ea1993a9832 /config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java | |
parent | 402bf7a45096fd8d6193cf92728c5620cc3910bb (diff) |
Add dictionary control for numeric fields.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java new file mode 100644 index 00000000000..dbc9a5e8e71 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java @@ -0,0 +1,41 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.searchdefinition.processing; + +import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.document.NumericDataType; +import com.yahoo.searchdefinition.RankProfileRegistry; +import com.yahoo.searchdefinition.Search; +import com.yahoo.searchdefinition.document.Attribute; +import com.yahoo.searchdefinition.document.Dictionary; +import com.yahoo.searchdefinition.document.SDField; +import com.yahoo.vespa.model.container.search.QueryProfiles; + +/** + * Propagates dictionary settings from field lecel to attribute level. + * Only applies to numeric fields with fast-search enabled. + * + * @author baldersheim + */ +public class DictionaryProcessor extends Processor { + public DictionaryProcessor(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles) { + super(search, deployLogger, rankProfileRegistry, queryProfiles); + } + @Override + public void process(boolean validate, boolean documentsOnly) { + for (SDField field : search.allConcreteFields()) { + Dictionary dictionary = field.getDictionary(); + if (dictionary == null) continue; + + Attribute attribute = field.getAttribute(); + if (attribute.getDataType() instanceof NumericDataType ) { + if (attribute.isFastSearch()) { + attribute.setDictionary(dictionary); + } else { + fail(search, field, "You must specify attribute:fast-search to allow dictionary control"); + } + } else { + fail(search, field, "You can only specify 'dictionary:' for numeric fields"); + } + } + } +} |