List of usage examples for org.apache.solr.common SolrInputField SolrInputField
public SolrInputField(String n)
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; }