@Override public boolean addDynamicField(final String name, final String value, final StringMode mode) { if (value == null) { return false; } else { switch (mode) { case STRING: { super.addField(name + stringSuffix, value); return true; } case TEXT: { super.addField(name + textSuffix, value); return true; } case SPLIT: { super.addField(name + collectionSuffix, value); return true; } default: { return false; } } } }
@Override public void addBooleanField(final String name, final Boolean b) { if (b == null) { super.addField(name, Boolean.FALSE.toString()); } else { super.addField(name, b.toString()); } }
@Override public boolean addDynamicField(final String name, final Float f) { if (f == null) { return false; } else { super.addField(name + floatSuffix, f.toString()); return true; } }
@Override public boolean addDynamicField(final String name, final Integer i) { if (i == null) { return false; } else { super.addField(name + intSuffix, i.toString()); return true; } }
@Override public boolean addDynamicField(final String name, final String value) { if (value == null) { return false; } else { super.addField(name + stringSuffix, value); return true; } }
@Override public boolean addDynamicField(final String name, final Collection<?> c) { if (c == null) { return false; } else { super.addField(name + collectionSuffix, JOINER.join(c)); return true; } }
@Override public boolean addDynamicField(final String name, final Double d) { if (d == null) { return false; } else { super.addField(name + doubleSuffix, d.toString()); return true; } }
@Override public boolean addDynamicField(final String name, final Long l) { if (l == null) { return false; } else { super.addField(name + longSuffix, l.toString()); return true; } }
@Override public boolean addDateField(final String name, final Date dt) { if (dt == null) { return false; } else { synchronized (SOLR_DATETIMEFORMAT) { final String dateFormatted = SOLR_DATETIMEFORMAT.format(dt); super.addField(name, dateFormatted); } return true; } }
@Override public <K> boolean addDynamicField( final String name, final Collection<? extends K> c, final Function<? super K, String> function) { if (c == null || c.size() == 0 || function == null) { return false; } else { super.addField(name + collectionSuffix, JOINER.join(Iterables.transform(c, function))); return true; } }
@Override public boolean addMultiField(final String name, final Collection<?> values) { if (values == null) { return false; } else { boolean wasAdded = false; for (Object value : values) { if (value == null) continue; super.addField(name, value.toString()); wasAdded = true; } return wasAdded; } }
private static SolrDocument toSolrDoc(SolrInputDocument sdoc, IndexSchema schema) { // TODO: do something more performant than this double conversion Document doc = DocumentBuilder.toDocument(sdoc, schema); // copy the stored fields only StoredDocument out = new StoredDocument(); for (IndexableField f : doc.getFields()) { if (f.fieldType().stored()) { out.add((StorableField) f); } } return toSolrDoc(out, schema); }
@Override public void addNumericField(final String name, final int i) { super.addField(name, Integer.toString(i)); }
@Override public void addNumericField(final String name, final double d) { super.addField(name, Double.toString(d)); }
@Override public void addNumericField(final String name, final long l) { super.addField(name, Long.toString(l)); }
@Override public boolean addDynamicField(final String name, final int i) { super.addField(name + intSuffix, Integer.toString(i)); return true; }
@Override public boolean addDynamicField(final String name, final long l) { super.addField(name + longSuffix, Long.toString(l)); return true; }
@Override public boolean addDynamicField(final String name, final float f) { super.addField(name + floatSuffix, Float.toString(f)); return true; }
@Override public void addBooleanField(final String name, final boolean b) { super.addField(name, Boolean.toString(b)); }
@Override public boolean addDynamicField(final String name, final double d) { super.addField(name + doubleSuffix, Double.toString(d)); return true; }