Example usage for org.apache.solr.common SolrInputField SolrInputField

List of usage examples for org.apache.solr.common SolrInputField SolrInputField

Introduction

In this page you can find the example usage for org.apache.solr.common SolrInputField SolrInputField.

Prototype

public SolrInputField(String n) 

Source Link

Usage

From source file:com.frank.search.solr.core.convert.MappingSolrConverter.java

License:Apache License

private Collection<SolrInputField> writeWildcardMapPropertyToTarget(Map<? super Object, ? super Object> target,
        SolrPersistentProperty persistentProperty, Map<?, ?> fieldValue) {

    TypeInformation<?> mapTypeInformation = persistentProperty.getTypeInformation().getMapValueType();
    Class<?> rawMapType = mapTypeInformation.getType();
    String fieldName = persistentProperty.getFieldName();

    Collection<SolrInputField> fields = new ArrayList<SolrInputField>();

    for (Map.Entry<?, ?> entry : fieldValue.entrySet()) {

        Object value = entry.getValue();
        String key = entry.getKey().toString();

        if (persistentProperty.isDynamicProperty()) {
            key = WildcardPosition.getAppropriate(key).createName(fieldName, key);
        }/*from w ww  .  j  av  a2s .  c  om*/

        SolrInputField field = new SolrInputField(key);

        if (value instanceof Iterable) {

            for (Object o : (Iterable<?>) value) {
                field.addValue(convertToSolrType(rawMapType, o), 1f);
            }
        } else {

            if (rawMapType.isArray()) {
                for (Object o : (Object[]) value) {
                    field.addValue(convertToSolrType(rawMapType, o), 1f);
                }
            } else {
                field.addValue(convertToSolrType(rawMapType, value), 1f);
            }

        }

        target.put(key, field);
        fields.add(field);
    }

    return fields;
}

From source file:com.frank.search.solr.core.convert.MappingSolrConverter.java

License:Apache License

private Collection<SolrInputField> writeRegularPropertyToTarget(
        final Map<? super Object, ? super Object> target, SolrPersistentProperty persistentProperty,
        Object fieldValue) {/*from w  ww  .  j  a  va 2 s. c  o m*/

    SolrInputField field = new SolrInputField(persistentProperty.getFieldName());

    if (persistentProperty.isCollectionLike()) {
        Collection<?> collection = asCollection(fieldValue);
        for (Object o : collection) {
            if (o != null) {
                field.addValue(convertToSolrType(persistentProperty.getType(), o), 1f);
            }
        }
    } else {
        field.setValue(convertToSolrType(persistentProperty.getType(), fieldValue), 1f);
    }

    target.put(persistentProperty.getFieldName(), field);

    return Collections.singleton(field);

}

From source file:com.inqool.dcap.integration.oai.harvester.SolrExternalSourcesIndexer.java

License:Apache License

protected SolrInputDocument modelToSolrInputDoc(ZdoModel model) {
    logger.debug("Constructing new SolrInputDocument...");

    final Map<String, SolrInputField> fields = new HashMap<>();

    //Add all Dublin Core terms
    for (String property : DCTools.getDcTermList()) {
        SolrInputField field = new SolrInputField(property);
        List<String> values = model.getAll(new PropertyImpl("http://purl.org/dc/terms/" + property));
        if (values.isEmpty())
            continue;

        field.addValue(values, INDEX_TIME_BOOST);
        fields.put(property, field);//from w ww .  j  av a2  s.  co m
    }

    //Add system fields
    SolrInputField field = new SolrInputField("id");
    field.addValue(model.get(ZdoTerms.oaiIdentifier), INDEX_TIME_BOOST);
    fields.put("id", field);

    addSolrFieldFromFedoraProperty("inventoryId", ZdoTerms.inventoryId, model, fields);
    addSolrFieldFromFedoraProperty("source", ZdoTerms.source, model, fields);

    addSolrFieldFromFedoraProperty("zdoGroup", ZdoTerms.group, model, fields);

    return new SolrInputDocument(fields);
}

From source file:com.inqool.dcap.integration.oai.harvester.SolrExternalSourcesIndexer.java

License:Apache License

private void addSolrField(String fieldName, Object value, Map<String, SolrInputField> fields) {
    if (value == null)
        return;/* w w  w  . j  av a  2  s . c o  m*/
    SolrInputField zdoTypeField = new SolrInputField(fieldName);
    zdoTypeField.addValue(value, INDEX_TIME_BOOST);
    fields.put(fieldName, zdoTypeField);
}

From source file:com.inqool.dcap.office.indexer.indexer.SolrBulkIndexer.java

License:Apache License

protected SolrInputDocument modelToSolrInputDoc(ZdoModel model) {
    logger.debug("Constructing new SolrInputDocument...");

    final Map<String, SolrInputField> fields = new HashMap<>();

    //Add all Dublin Core terms
    for (String property : DCTools.getDcTermList()) {
        SolrInputField field = new SolrInputField(property);
        List<String> values = model.getAll(new PropertyImpl("http://purl.org/dc/terms/" + property));
        if (values.isEmpty())
            continue;
        //Skip fields that were not ticked to be published
        String visible = model.get(new PropertyImpl("http://purl.org/dc/terms/" + property + "_visibility"));
        if ("false".equals(visible) || "0".equals(visible)) { //0 should not occur any more
            continue;
        }//from   w  ww . j  a v a2  s .  c o m
        if ("isPartOf".equals(property)) { //remove ip address from isPartOf
            values.set(0, store.getOnlyIdFromUrl(values.get(0)));
        }
        if ("".equals(values.get(0))) {
            values.set(0, "unknown");
        }

        field.addValue(values, INDEX_TIME_BOOST);
        fields.put(property, field);

        //Suggester data
        if ("title".equals(property) || "creator".equals(property)) {
            SolrInputDocument suggesterDoc = new SolrInputDocument();
            String suggestVal = values.get(0).trim();
            if (!suggestVal.isEmpty() && !suggestVal.equals("unknown")) {
                suggesterDoc.addField("suggesterData", values.get(0).trim());
                dataForSuggester.add(suggesterDoc);
            }
        }
    }

    //Add system fields
    SolrInputField field = new SolrInputField("id");
    field.addValue(store.getOnlyIdFromUrl(model.getUrl()), INDEX_TIME_BOOST);
    fields.put("id", field);

    addSolrFieldFromFedoraProperty("inventoryId", ZdoTerms.inventoryId, model, fields);

    addSolrFieldFromFedoraProperty("zdoType", ZdoTerms.zdoType, model, fields);
    addSolrFieldFromFedoraProperty("zdoGroup", ZdoTerms.group, model, fields);
    addSolrFieldFromFedoraProperty("orgIdmId", ZdoTerms.organization, model, fields);
    addSolrFieldFromFedoraProperty("allowContentPublicly", ZdoTerms.allowContentPublicly, model, fields);
    addSolrFieldFromFedoraProperty("allowPdfExport", ZdoTerms.allowPdfExport, model, fields);
    addSolrFieldFromFedoraProperty("allowEpubExport", ZdoTerms.allowEpubExport, model, fields);
    addSolrFieldFromFedoraProperty("watermark", ZdoTerms.watermark, model, fields);
    addSolrFieldFromFedoraProperty("watermarkPosition", ZdoTerms.watermarkPosition, model, fields);
    addSolrFieldFromFedoraProperty("imgThumb", ZdoTerms.imgThumb, model, fields);
    addSolrFieldFromFedoraProperty("imgNormal", ZdoTerms.imgNormal, model, fields);

    String publishFromStr = model.get(ZdoTerms.publishFrom);
    if (publishFromStr != null) {
        String publishFromUtc = ZonedDateTime
                .ofInstant(Instant.ofEpochSecond(Long.valueOf(publishFromStr)), ZoneId.systemDefault())
                .withZoneSameInstant(ZoneOffset.UTC).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
        addSolrField("publishFrom", publishFromUtc, fields);
    }
    String publishToStr = model.get(ZdoTerms.publishTo);
    if (publishToStr != null) {
        String publishToUtc = ZonedDateTime
                .ofInstant(Instant.ofEpochSecond(Long.valueOf(publishToStr)), ZoneId.systemDefault())
                .withZoneSameInstant(ZoneOffset.UTC).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
        addSolrField("publishTo", publishToUtc, fields);
    }

    String created = model.get(DCTerms.created);
    if (created != null) {
        AtomicInteger yearStart = new AtomicInteger();
        AtomicInteger yearEnd = new AtomicInteger();
        AtomicBoolean startValid = new AtomicBoolean();
        AtomicBoolean endValid = new AtomicBoolean();
        YearNormalizer.normalizeCreatedYear(created, yearStart, startValid, yearEnd, endValid);
        if (startValid.get()) {
            addSolrField("yearStart", yearStart.get(), fields);
        } else {
            logger.warn("Year could not be normalized for input string " + created);
        }
        if (endValid.get()) {
            addSolrField("yearEnd", yearEnd.get(), fields);
        }
    }

    String orgName = orgNameMapping.get(model.get(ZdoTerms.organization));
    if (orgName == null) {
        orgName = "Neznm";
    }
    addSolrField("organization", orgName, fields);

    String documentTypeId = model.get(ZdoTerms.documentType); //type and subtype names must be found for id
    String documentSubTypeId = model.get(ZdoTerms.documentSubType);
    if (documentTypeId != null) {
        addSolrField("documentType", documentTypeAccess.getTypeNameForId(Integer.valueOf(documentTypeId)),
                fields);
    }
    if (documentSubTypeId != null) {
        addSolrField("documentSubType",
                documentTypeAccess.getSubTypeNameForId(Integer.valueOf(documentSubTypeId)), fields);
    }

    //Add customFields
    int fieldIndex = 0; //we actually start from 1
    do {
        fieldIndex++;
        String fieldName = model
                .get(new PropertyImpl("http://inqool.cz/zdo/1.0/customField_" + fieldIndex + "_name"));
        if (fieldName == null)
            break;
        fieldName = "customField_" + fieldName;
        String visible = model
                .get(new PropertyImpl("http://inqool.cz/zdo/1.0/customField_" + fieldIndex + "_visibility"));
        if ("false".equals(visible) || "0".equals(visible))
            continue;
        List<String> fieldValues = model
                .getAll(new PropertyImpl("http://inqool.cz/zdo/1.0/customField_" + fieldIndex));
        if ("".equals(fieldValues.get(0))) {
            fieldValues.set(0, "unknown");
        }
        SolrInputField customField = new SolrInputField(fieldName);
        customField.addValue(fieldValues, INDEX_TIME_BOOST);
        fields.put(fieldName, customField);
    } while (true);

    SolrInputDocument solrInputDocument = new SolrInputDocument(fields);
    return solrInputDocument;
}

From source file:com.ngdata.hbaseindexer.indexer.IdAddingSolrUpdateWriterTest.java

License:Apache License

@Test
public void testAdd_IdAlreadyPresent() {
    IdAddingSolrUpdateWriter updateWriter = new IdAddingSolrUpdateWriter(UNIQUE_KEY_FIELD, DOCUMENT_ID, null,
            TABLE_NAME, updateCollector);

    SolrInputField solrIdField = new SolrInputField(DOCUMENT_ID);
    solrIdField.setValue(DOCUMENT_ID, 1.0f);

    when(solrDoc.getField(UNIQUE_KEY_FIELD)).thenReturn(solrIdField);

    updateWriter.add(solrDoc);/*from  w  w w  .  j a  va2 s  .  c o m*/

    verify(updateCollector).add(DOCUMENT_ID, solrDoc);
}

From source file:com.ngdata.hbaseindexer.indexer.IdAddingSolrUpdateWriterTest.java

License:Apache License

@Test
public void testAdd_MultipleDocumentsWithTheirOwnIds() {

    String idA = DOCUMENT_ID + "A";
    String idB = DOCUMENT_ID + "B";

    IdAddingSolrUpdateWriter updateWriter = new IdAddingSolrUpdateWriter(UNIQUE_KEY_FIELD, DOCUMENT_ID, null,
            TABLE_NAME, updateCollector);

    SolrInputDocument docA = mock(SolrInputDocument.class);
    SolrInputDocument docB = mock(SolrInputDocument.class);

    SolrInputField keyFieldA = new SolrInputField(UNIQUE_KEY_FIELD);
    keyFieldA.setValue(idA, 1.0f);//from   w  w w  .ja v a 2 s .com
    SolrInputField keyFieldB = new SolrInputField(UNIQUE_KEY_FIELD);
    keyFieldB.setValue(idB, 1.0f);

    when(docA.getField(UNIQUE_KEY_FIELD)).thenReturn(keyFieldA);
    when(docB.getField(UNIQUE_KEY_FIELD)).thenReturn(keyFieldB);

    updateWriter.add(docA);
    updateWriter.add(docB);

    verify(updateCollector).add(idA, docA);
    verify(updateCollector).add(idB, docB);
}

From source file:com.sindicetech.siren.solr.handler.mapper.FieldMapper.java

License:Open Source License

SolrInputField map(final FieldEntry entry) {
    SolrInputField field = new SolrInputField(this.getTargetFieldname(entry));
    field.setValue(entry.getValue(), 1.0f);
    return field;
}

From source file:com.sindicetech.siren.solr.UpdateProcessorTestBase.java

License:Open Source License

/**
 * Convenience method for building up SolrInputFields
 *///w  ww . ja  va2 s. c  om
final SolrInputField field(String name, float boost, Object... values) {
    SolrInputField f = new SolrInputField(name);
    for (Object v : values) {
        f.addValue(v, 1.0F);
    }
    f.setBoost(boost);
    return f;
}

From source file:edu.cmu.lti.oaqa.annographix.solr.SolrUtils.java

License:Apache License

/**
 * Take key-value pairs (field name, field text) and create an indexable document,
 * which is an object of the type {@link org.apache.solr.common.SolrInputDocument}.
 * /* w ww .  j a  v a  2 s  .  co  m*/
 * @param    keyValueMap  key-value map (field name, field text).
 * 
 * @return an object of the type {@link org.apache.solr.common.SolrInputDocument},
 *         which can be indexed.
 * @throws Exception
 */
public static SolrInputDocument buildSolrDocument(HashMap<String, Object> keyValueMap) throws Exception {

    SolrInputDocument doc = new SolrInputDocument();

    Iterator<String> keys = keyValueMap.keySet().iterator();
    while (keys.hasNext()) {
        String key = keys.next();
        Object value = keyValueMap.get(key);

        SolrInputField field = new SolrInputField(key);
        try {

            doc.addField(field.getName(), value, 1.0f);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    return doc;

}