void textField(final String fieldName, final Object value, final FieldConsumer consumer) { consumer.accept(genericFieldName, fieldName, new SortedSetDocValuesFacetField(getTextName(fieldName), value.toString())); } }
/** Build the example index. */ private void index() throws IOException { IndexWriter indexWriter = new IndexWriter(indexDir, new IndexWriterConfig( new WhitespaceAnalyzer()).setOpenMode(OpenMode.CREATE)); Document doc = new Document(); doc.add(new SortedSetDocValuesFacetField("Author", "Bob")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2010")); indexWriter.addDocument(config.build(doc)); doc = new Document(); doc.add(new SortedSetDocValuesFacetField("Author", "Lisa")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2010")); indexWriter.addDocument(config.build(doc)); doc = new Document(); doc.add(new SortedSetDocValuesFacetField("Author", "Lisa")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2012")); indexWriter.addDocument(config.build(doc)); doc = new Document(); doc.add(new SortedSetDocValuesFacetField("Author", "Susan")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2012")); indexWriter.addDocument(config.build(doc)); doc = new Document(); doc.add(new SortedSetDocValuesFacetField("Author", "Frank")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "1999")); indexWriter.addDocument(config.build(doc)); indexWriter.close(); }
@Override void newFieldNoStore(String fieldName, Object value, FieldConsumer consumer) { final String stringValue = getStringValue(value); if (stringValue != null) consumer.accept(genericFieldName, fieldName, new SortedSetDocValuesFacetField(fieldName, stringValue)); }
@Override void newFieldWithStore(String fieldName, Object value, FieldConsumer consumer) { final String stringValue = getStringValue(value); if (stringValue == null) return; consumer.accept(genericFieldName, fieldName, new SortedSetDocValuesFacetField(fieldName, stringValue)); consumer.accept(genericFieldName, fieldName, new StoredField(fieldName, stringValue)); }
new WhitespaceAnalyzer())); Document doc = new Document(); doc.add(new SortedSetDocValuesFacetField("Author", "Bob")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2010")); indexWriter.addDocument(config.build(doc)); doc.add(new SortedSetDocValuesFacetField("Author", "Lisa")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2010")); indexWriter.addDocument(config.build(doc)); doc.add(new SortedSetDocValuesFacetField("Author", "Lisa")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2012")); indexWriter.addDocument(config.build(doc)); doc.add(new SortedSetDocValuesFacetField("Author", "Susan")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "2012")); indexWriter.addDocument(config.build(doc)); doc.add(new SortedSetDocValuesFacetField("Author", "Frank")); doc.add(new SortedSetDocValuesFacetField("Publish Year", "1999")); indexWriter.addDocument(config.build(doc));
@Override protected boolean indexFacetProperty(Document doc, int tag, PropertyState property, String pname) { String facetFieldName = FieldNames.createFacetFieldName(pname); getFacetsConfig().setIndexFieldName(pname, facetFieldName); boolean fieldAdded = false; try { if (tag == Type.STRINGS.tag() && property.isArray()) { getFacetsConfig().setMultiValued(pname, true); Iterable<String> values = property.getValue(Type.STRINGS); for (String value : values) { if (value != null && value.length() > 0) { doc.add(new SortedSetDocValuesFacetField(pname, value)); } } fieldAdded = true; } else if (tag == Type.STRING.tag()) { String value = property.getValue(Type.STRING); if (value.length() > 0) { doc.add(new SortedSetDocValuesFacetField(pname, value)); fieldAdded = true; } } } catch (Throwable e) { log.warn("[{}] Ignoring facet property. Could not convert property {} of type {} to type {} for path {}", getIndexName(), pname, Type.fromTag(property.getType().tag(), false), Type.fromTag(tag, false), path, e); } return fieldAdded; }
import org.apache.lucene.document.Document; import org.apache.lucene.facet.sortedset.SortedSetDocValuesFacetField; import org.hibernate.search.bridge.FieldBridge; import org.hibernate.search.bridge.LuceneOptions; import java.io.IOException; public class CustomFieldBridge implements FieldBridge { public void set(String name, Object value, Document document, LuceneOptions luceneOptions) { if (value != null) { CustomField customField = (CustomField) value; if (customField.getFieldValue() != null) { String fieldName = customField.getFieldName(); String fieldValue = customField.getFieldValue(); CustomFacetsConfig config = new CustomFacetsConfig(); config.setIndexFieldName(fieldName, fieldName); Document doc = new Document(); doc.add(new SortedSetDocValuesFacetField(fieldName, fieldValue)); try { config.CustomBuild(doc, document); } catch (IOException e) { e.printStackTrace(); } } } } }
@Override protected boolean indexFacetProperty(Document doc, int tag, PropertyState property, String pname) { String facetFieldName = FieldNames.createFacetFieldName(pname); getFacetsConfig().setIndexFieldName(pname, facetFieldName); boolean fieldAdded = false; try { if (tag == Type.STRINGS.tag() && property.isArray()) { getFacetsConfig().setMultiValued(pname, true); Iterable<String> values = property.getValue(Type.STRINGS); for (String value : values) { if (value != null && value.length() > 0) { doc.add(new SortedSetDocValuesFacetField(pname, value)); } } fieldAdded = true; } else if (tag == Type.STRING.tag()) { String value = property.getValue(Type.STRING); if (value.length() > 0) { doc.add(new SortedSetDocValuesFacetField(pname, value)); fieldAdded = true; } } } catch (Throwable e) { log.warn("[{}] Ignoring facet property. Could not convert property {} of type {} to type {} for path {}", getIndexName(), pname, Type.fromTag(property.getType().tag(), false), Type.fromTag(tag, false), path, e); } return fieldAdded; }
return; facetField = new SortedSetDocValuesFacetField( facetMetadata.getAbsoluteName(), stringValue ); break; case LONG: facetField = new SortedSetDocValuesFacetField( facetMetadata.getAbsoluteName(), ( (TwoWayFieldBridge) fieldBridge ).objectToString( value ) );
return; facetField = new SortedSetDocValuesFacetField( facetMetadata.getAbsoluteName(), stringValue ); break; case LONG: facetField = new SortedSetDocValuesFacetField( facetMetadata.getAbsoluteName(), ( (TwoWayFieldBridge) fieldBridge ).objectToString( value ) );