Search in sources :

Example 56 with Field

use of com.yahoo.document.Field in project vespa by vespa-engine.

the class IndexSchemaTestCase method requireThatStructWithArrayFieldIsFlattened.

@Test
public void requireThatStructWithArrayFieldIsFlattened() {
    StructDataType type = new StructDataType("my_struct");
    type.addField(new Field("my_byte", DataType.getArray(DataType.BYTE)));
    type.addField(new Field("my_double", DataType.getArray(DataType.DOUBLE)));
    type.addField(new Field("my_float", DataType.getArray(DataType.FLOAT)));
    type.addField(new Field("my_int", DataType.getArray(DataType.INT)));
    type.addField(new Field("my_long", DataType.getArray(DataType.LONG)));
    type.addField(new Field("my_raw", DataType.getArray(DataType.RAW)));
    type.addField(new Field("my_string", DataType.getArray(DataType.STRING)));
    type.addField(new Field("my_uri", DataType.getArray(DataType.URI)));
    assertFlat(new Field("foo", type), new Field("foo.my_byte", DataType.getArray(DataType.BYTE)), new Field("foo.my_double", DataType.getArray(DataType.DOUBLE)), new Field("foo.my_float", DataType.getArray(DataType.FLOAT)), new Field("foo.my_int", DataType.getArray(DataType.INT)), new Field("foo.my_long", DataType.getArray(DataType.LONG)), new Field("foo.my_raw", DataType.getArray(DataType.RAW)), new Field("foo.my_string", DataType.getArray(DataType.STRING)), new Field("foo.my_uri", DataType.getArray(DataType.URI)));
}
Also used : Field(com.yahoo.document.Field) StructDataType(com.yahoo.document.StructDataType) Test(org.junit.Test)

Example 57 with Field

use of com.yahoo.document.Field in project vespa by vespa-engine.

the class IndexSchemaTestCase method assertFlat.

private static void assertFlat(Field fieldToFlatten, Field... expectedFields) {
    List<Field> actual = new LinkedList<>(IndexSchema.flattenField(fieldToFlatten));
    List<Field> expected = new LinkedList<>(Arrays.asList(expectedFields));
    Collections.sort(actual);
    Collections.sort(expected);
    for (Field field : actual) {
        if (!expected.remove(field)) {
            fail("Unexpected field: " + field);
        }
    }
    assertTrue("Missing fields: " + expected, expected.isEmpty());
}
Also used : Field(com.yahoo.document.Field) LinkedList(java.util.LinkedList)

Example 58 with Field

use of com.yahoo.document.Field in project vespa by vespa-engine.

the class ReferenceFieldTestCase method assertSearchContainsReferenceField.

private static void assertSearchContainsReferenceField(String expectedFieldname, String referencedDocType, SDDocumentType documentType) {
    Field field = documentType.getDocumentType().getField(expectedFieldname);
    assertNotNull("Field does not exist in document type: " + expectedFieldname, field);
    DataType dataType = field.getDataType();
    assertThat(dataType, instanceOf(ReferenceDataType.class));
    ReferenceDataType refField = (ReferenceDataType) dataType;
    assertEquals(referencedDocType, refField.getTargetType().getName());
}
Also used : Field(com.yahoo.document.Field) ReferenceDataType(com.yahoo.document.ReferenceDataType) DataType(com.yahoo.document.DataType) ReferenceDataType(com.yahoo.document.ReferenceDataType)

Example 59 with Field

use of com.yahoo.document.Field in project vespa by vespa-engine.

the class AddAttributeTransformToSummaryOfImportedFieldsTest method createSingleImportedField.

private static ImportedFields createSingleImportedField(String fieldName) {
    Search targetSearch = new Search("target_doc", MockApplicationPackage.createEmpty());
    SDField targetField = new SDField("target_field", DataType.INT);
    DocumentReference documentReference = new DocumentReference(new Field("reference_field"), targetSearch);
    ImportedField importedField = new ImportedField(fieldName, documentReference, targetField);
    return new ImportedFields(Collections.singletonMap(fieldName, importedField));
}
Also used : SummaryField(com.yahoo.vespa.documentmodel.SummaryField) SDField(com.yahoo.searchdefinition.document.SDField) Field(com.yahoo.document.Field) ImportedField(com.yahoo.searchdefinition.document.ImportedField) SDField(com.yahoo.searchdefinition.document.SDField) Search(com.yahoo.searchdefinition.Search) ImportedField(com.yahoo.searchdefinition.document.ImportedField) ImportedFields(com.yahoo.searchdefinition.document.ImportedFields) DocumentReference(com.yahoo.searchdefinition.DocumentReference)

Example 60 with Field

use of com.yahoo.document.Field in project vespa by vespa-engine.

the class GetSearcher method handleFieldFiltering.

private void handleFieldFiltering(GetResponse response, Result result, String fieldName, String contentType, boolean headersOnly) {
    if (response.getDocumentHits().isEmpty()) {
        result.hits().addError(ErrorMessage.createNotFound("Document not found, could not return field '" + fieldName + "'"));
        return;
    }
    if (result.hits().getErrorHit() == null) {
        Document doc = response.getDocumentHits().get(0).getDocument();
        Field field = doc.getDataType().getField(fieldName);
        boolean wrapXml = false;
        if (field == null) {
            result.hits().addError(ErrorMessage.createIllegalQuery("Field '" + fieldName + "' not found in document type"));
            return;
        }
        FieldValue value = doc.getFieldValue(field);
        // content will be null. We treat this as an error.
        if (value == null) {
            if (!field.isHeader() && headersOnly) {
                // TODO(vekterli): make this work with field sets as well.
                result.hits().addError(ErrorMessage.createInvalidQueryParameter("Field '" + fieldName + "' is located in document body, but headersonly " + "prevents it from being retrieved in " + doc.getId().toString()));
            } else {
                result.hits().addError(ErrorMessage.createNotFound("Field '" + fieldName + "' found in document type, but had " + "no content in " + doc.getId().toString()));
            }
            return;
        }
        String encoding = null;
        if (field.getDataType() == DataType.RAW) {
            if (contentType == null) {
                contentType = "application/octet-stream";
            }
            encoding = "ISO-8859-1";
        } else {
            // By default, return field wrapped in a blanket of vespa XML
            contentType = "text/xml";
            wrapXml = true;
        }
        if (encoding == null) {
            // Encoding doesn't matter for binary content, since we're always
            // writing directly to the byte buffer and not through a charset
            // encoder. Presumably, the client is intelligent enough to not
            // attempt to UTF-8 decode binary data.
            encoding = "UTF-8";
        }
        // Add hit now that we know there aren't any field errors. Otherwise,
        // there would be both an error hit and a document hit in the result
        response.addHitsToResult(result, false);
        // Override Vespa XML template
        result.getTemplating().setTemplates(new DocumentFieldTemplate(field, contentType, encoding, wrapXml));
    }
// else: return with error hit, invoking regular Vespa XML error template
}
Also used : Field(com.yahoo.document.Field) FieldValue(com.yahoo.document.datatypes.FieldValue) Document(com.yahoo.document.Document)

Aggregations

Field (com.yahoo.document.Field)115 Test (org.junit.Test)50 StructDataType (com.yahoo.document.StructDataType)46 DocumentType (com.yahoo.document.DocumentType)24 DataType (com.yahoo.document.DataType)17 SimpleTestAdapter (com.yahoo.vespa.indexinglanguage.SimpleTestAdapter)14 ReferenceDataType (com.yahoo.document.ReferenceDataType)13 StringFieldValue (com.yahoo.document.datatypes.StringFieldValue)13 ArrayDataType (com.yahoo.document.ArrayDataType)12 MapDataType (com.yahoo.document.MapDataType)12 TensorDataType (com.yahoo.document.TensorDataType)11 WeightedSetDataType (com.yahoo.document.WeightedSetDataType)11 SDField (com.yahoo.searchdefinition.document.SDField)10 PositionDataType (com.yahoo.document.PositionDataType)9 FieldValue (com.yahoo.document.datatypes.FieldValue)9 IntegerFieldValue (com.yahoo.document.datatypes.IntegerFieldValue)9 GrowableByteBuffer (com.yahoo.io.GrowableByteBuffer)8 Struct (com.yahoo.document.datatypes.Struct)7 DocumentTypeManager (com.yahoo.document.DocumentTypeManager)6 Document (com.yahoo.document.Document)5