aboutsummaryrefslogtreecommitdiffstats
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/derived/VsmFields.java22
-rw-r--r--config-model/src/test/derived/indexschema/vsmfields.cfg7
2 files changed, 22 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java
index 2fd90d6c87e..7310a3fbd88 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java
@@ -14,6 +14,7 @@ import com.yahoo.document.datatypes.TensorFieldValue;
import com.yahoo.searchdefinition.FieldSets;
import com.yahoo.searchdefinition.Schema;
import com.yahoo.searchdefinition.document.FieldSet;
+import com.yahoo.searchdefinition.document.GeoPos;
import com.yahoo.searchdefinition.document.Matching;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
@@ -53,15 +54,19 @@ public class VsmFields extends Derived implements VsmfieldsConfig.Producer {
protected void derive(StreamingDocumentType document, SDField field) {
if (field.usesStructOrMap()) {
+ if (GeoPos.isAnyPos(field)) {
+ StreamingField streamingField = new StreamingField(field);
+ addField(streamingField.getName(), streamingField);
+ addFieldToIndices(document, field.getName(), streamingField);
+ }
for (SDField structField : field.getStructFields()) {
derive(document, structField); // Recursion
}
} else {
-
if (! (field.doesIndexing() || field.doesSummarying() || field.doesAttributing()) )
return;
- StreamingField streamingField=new StreamingField(field);
+ StreamingField streamingField = new StreamingField(field);
addField(streamingField.getName(),streamingField);
deriveIndices(document, field, streamingField);
}
@@ -132,14 +137,15 @@ public class VsmFields extends Derived implements VsmfieldsConfig.Producer {
public static Type STRING = new Type("string","AUTOUTF8");
public static Type BOOL = new Type("bool","BOOL");
public static Type UNSEARCHABLESTRING = new Type("string","NONE");
+ public static Type GEO_POSITION = new Type("position", "GEOPOS");
private String name;
private String searchMethod;
- private Type(String name,String searchMethod) {
- this.name=name;
- this.searchMethod=searchMethod;
+ private Type(String name, String searchMethod) {
+ this.name = name;
+ this.searchMethod = searchMethod;
}
@Override
@@ -166,10 +172,10 @@ public class VsmFields extends Derived implements VsmfieldsConfig.Producer {
}
public StreamingField(SDField field) {
- this(field.getName(),field.getDataType(),field.getMatching(), field.doesAttributing());
+ this(field.getName(), field.getDataType(), field.getMatching(), field.doesAttributing());
}
- private StreamingField(String name,DataType sourceType, Matching matching, boolean isAttribute) {
+ private StreamingField(String name, DataType sourceType, Matching matching, boolean isAttribute) {
this.name = name;
this.type = convertType(sourceType);
this.matching = matching;
@@ -191,6 +197,8 @@ public class VsmFields extends Derived implements VsmfieldsConfig.Producer {
return Type.BOOL;
} else if (fieldType.equals(DataType.BYTE)) {
return Type.INT8;
+ } else if (GeoPos.isAnyPos(fieldType)) {
+ return Type.GEO_POSITION;
} else if (fieldType instanceof NumericDataType) {
return Type.INT32;
} else if (fval instanceof StringFieldValue) {
diff --git a/config-model/src/test/derived/indexschema/vsmfields.cfg b/config-model/src/test/derived/indexschema/vsmfields.cfg
index 9dcffd30313..31db622183e 100644
--- a/config-model/src/test/derived/indexschema/vsmfields.cfg
+++ b/config-model/src/test/derived/indexschema/vsmfields.cfg
@@ -20,6 +20,11 @@ fieldspec[].searchmethod AUTOUTF8
fieldspec[].arg1 ""
fieldspec[].maxlength 1048576
fieldspec[].fieldtype INDEX
+fieldspec[].name "pos"
+fieldspec[].searchmethod GEOPOS
+fieldspec[].arg1 ""
+fieldspec[].maxlength 1048576
+fieldspec[].fieldtype INDEX
fieldspec[].name "se"
fieldspec[].searchmethod AUTOUTF8
fieldspec[].arg1 "word"
@@ -124,6 +129,8 @@ documenttype[].index[].name "sc"
documenttype[].index[].field[].name "sc"
documenttype[].index[].name "sd"
documenttype[].index[].field[].name "sd"
+documenttype[].index[].name "pos"
+documenttype[].index[].field[].name "pos"
documenttype[].index[].name "se"
documenttype[].index[].field[].name "se"
documenttype[].index[].name "sf"