FIT transformer class examples

The DataStax Developer Blog provides an introduction to DSE Field Transformers.

Here are examples of field input and output transformer (FIT) classes.

Input transformer example

package com.datastax.bdp.search.solr.functional;

    import java.io.IOException;

    import org.apache.commons.codec.binary.Hex;
    import org.apache.commons.lang.StringUtils;
    import org.apache.lucene.document.Document;
    import org.apache.solr.core.SolrCore;
    import org.apache.solr.schema.SchemaField;

    import com.datastax.bdp.search.solr.FieldOutputTransformer;
    import org.apache.solr.schema.IndexSchema;

    public class BinaryFieldInputTransformer extends FieldInputTransformer
    {
    @Override
    public boolean evaluate(String field)
    {
    return field.equals("binary");
    }

    @Override
    public void addFieldToDocument(SolrCore core,
    IndexSchema schema,
    String key,
    Document doc,
    SchemaField fieldInfo,
    String fieldValue,
    DocumentHelper helper)
    throws IOException
    {
    try
    {
    byte[] raw = Hex.decodeHex(fieldValue.toCharArray());
    byte[] decomp = DSP1493Test.decompress(raw);
    String str = new String(decomp, "UTF-8");
    String[] arr = StringUtils.split(str, ",");
    String binary_name = arr[0];
    String binary_type = arr[1];
    String binary_title = arr[2];

    SchemaField binaryNameField = core.getSchema().getFieldOrNull("binary_name");
    SchemaField binaryTypeField = core.getSchema().getFieldOrNull("binary_type");
    SchemaField binaryTitleField = core.getSchema().getFieldOrNull("binary_title");

    helper.addFieldToDocument(core, core.getSchema(), key, doc, binaryNameField, binary_name);
    helper.addFieldToDocument(core, core.getSchema(), key, doc, binaryTypeField, binary_type);
    helper.addFieldToDocument(core, core.getSchema(), key, doc, binaryTitleField, binary_title);
    }
    catch (Exception ex)
    {
    throw new RuntimeException(ex);
    }
    }
    }

Output transformer example

package com.datastax.bdp.search.solr.functional;

    import java.io.IOException;
    import org.apache.commons.lang.StringUtils;
    import org.apache.lucene.index.FieldInfo;
    import org.apache.lucene.index.StoredFieldVisitor;
    import com.datastax.bdp.search.solr.FieldOutputTransformer;

    public class BinaryFieldOutputTransformer extends FieldOutputTransformer
    {
    @Override
    public void binaryField(FieldInfo fieldInfo, byte[] value,
    StoredFieldVisitor visitor, DocumentHelper helper) throws IOException
    {
    byte[] bytes = DSP1493Test.decompress(value);
    String str = new String(bytes, "UTF-8");
    String[] arr = StringUtils.split(str, ",");
    String binary_name = arr[0];
    String binary_type = arr[1];
    String binary_title = arr[2];

    FieldInfo binary_name_fi = helper.getFieldInfo("binary_name");
    FieldInfo binary_type_fi = helper.getFieldInfo("binary_type");
    FieldInfo binary_title_fi = helper.getFieldInfo("binary_title");

    visitor.stringField(binary_name_fi, binary_name);
    visitor.stringField(binary_type_fi, binary_type);
    visitor.stringField(binary_title_fi, binary_title);
    }
    }

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com