package lux.index.field; import java.util.Collections; import lux.index.FieldRole; import lux.index.XPathValueMapper; import lux.index.XmlIndexer; import lux.index.analysis.QNameValueTokenStream; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.document.Field.Store; import org.apache.lucene.document.TextField; import org.apache.lucene.index.IndexableField; import org.apache.lucene.util.Version; public class QNameValueField extends FieldDefinition { public QNameValueField () { super (FieldRole.QNAME_VALUE, new WhitespaceAnalyzer(Version.LUCENE_46), Store.NO, Type.TOKENS); } @Override public Iterable<IndexableField> getFieldValues(XmlIndexer indexer) { // replace with a custom Fieldable XPathValueMapper mapper = (XPathValueMapper) indexer.getPathMapper(); return new FieldValues (this, Collections.singleton (new TextField(getName(), new QNameValueTokenStream (mapper.getPathValues ())))); } }