summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/javacc
diff options
context:
space:
mode:
authorArne Juul <arnej@vespa.ai>2024-02-21 14:31:27 +0000
committerArne Juul <arnej@vespa.ai>2024-02-22 10:36:19 +0000
commit97eff1f15dcafe4a8d0229fa36b3e0448de2f4d6 (patch)
tree7bfa620f51263b3e2c6cc1bd319b922a0cb33a09 /config-model/src/main/javacc
parent4f0947b6617f5c9ff0a133a1f12bb4a5b7d57bb6 (diff)
allow inputs { query(foo) string }
Diffstat (limited to 'config-model/src/main/javacc')
-rw-r--r--config-model/src/main/javacc/SchemaParser.jj25
1 files changed, 15 insertions, 10 deletions
diff --git a/config-model/src/main/javacc/SchemaParser.jj b/config-model/src/main/javacc/SchemaParser.jj
index f298293ed57..d769f6208aa 100644
--- a/config-model/src/main/javacc/SchemaParser.jj
+++ b/config-model/src/main/javacc/SchemaParser.jj
@@ -34,6 +34,7 @@ import com.yahoo.schema.document.Stemming;
import com.yahoo.schema.document.SDField;
import com.yahoo.schema.FeatureNames;
import com.yahoo.schema.fieldoperation.IndexingOperation;
+import com.yahoo.search.schema.RankProfile.InputType;
import com.yahoo.searchlib.rankingexpression.FeatureList;
import com.yahoo.searchlib.rankingexpression.Reference;
import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
@@ -298,6 +299,7 @@ TOKEN :
| < HNSW: "hnsw" >
| < MAX_LINKS_PER_NODE: "max-links-per-node" >
| < DOUBLE_KEYWORD: "double" >
+| < STRING_KEYWORD: "string" >
| < DISTANCE_METRIC: "distance-metric" >
| < NEIGHBORS_TO_EXPLORE_AT_INSERT: "neighbors-to-explore-at-insert" >
| < MULTI_THREADED_INDEXING: "multi-threaded-indexing" >
@@ -2012,11 +2014,11 @@ void inputs(ParsedRankProfile profile) :
void input(ParsedRankProfile profile) :
{
Reference reference;
- TensorType type = TensorType.empty;
+ InputType type = new InputType(TensorType.empty, false);
Tensor defaultValue = null;
}
{
- reference = inputName() ( type = valueType(reference))? ( <COLON> (<NL>)* defaultValue = tensorValue(type) )?
+ reference = inputName() ( type = valueType(reference))? ( <COLON> (<NL>)* defaultValue = tensorValue(type.tensorType()) )?
{ profile.addInput(reference, new RankProfile.Input(reference, type, Optional.ofNullable(defaultValue))); }
}
@@ -2034,18 +2036,20 @@ Reference inputName() :
{ return FeatureNames.asQueryFeature(name); }
}
-TensorType valueType(Reference reference) :
+InputType valueType(Reference reference) :
{
TensorType type;
-
+ InputType result;
}
{
(
- ( type = tensorType("Type of " + reference) )
+ ( type = tensorType("Type of " + reference) { result = new InputType(type, false); } )
+ |
+ ( <DOUBLE_KEYWORD> { result = new InputType(TensorType.empty, false); } )
|
- ( <DOUBLE_KEYWORD> { type = TensorType.empty; } )
+ ( <STRING_KEYWORD> { result = new InputType(TensorType.empty, true); } )
)
- { return type; }
+ { return result; }
}
/**
@@ -2329,7 +2333,7 @@ void constants(ParsedSchema schema, ParsedRankProfile profile) :
void constant(ParsedSchema schema, ParsedRankProfile profile) :
{
Reference name = null;
- TensorType type = TensorType.empty;
+ InputType type = new InputType(TensorType.empty, false);
Tensor value = null;
String valuePath = null;
}
@@ -2337,12 +2341,12 @@ void constant(ParsedSchema schema, ParsedRankProfile profile) :
(
name = constantName()
(
- LOOKAHEAD(4) ( ( type = valueType(name) )? <COLON> (<NL>)* ( value = tensorValue(type) | valuePath = fileItem())
+ LOOKAHEAD(4) ( ( type = valueType(name) )? <COLON> (<NL>)* ( value = tensorValue(type.tensorType()) | valuePath = fileItem())
{
if (value != null)
profile.add(new RankProfile.Constant(name, value));
else
- profile.add(new RankProfile.Constant(name, type, valuePath));
+ profile.add(new RankProfile.Constant(name, type.tensorType(), valuePath));
}
)
| // Deprecated forms (TODO: Vespa > 8: Add warning):
@@ -2710,6 +2714,7 @@ String identifier() : { }
| <DIVERSITY>
| <DOCUMENT>
| <DOUBLE_KEYWORD>
+ | <STRING_KEYWORD>
| <DYNAMIC>
| <EXACT>
| <FALSE>