package lux.query.parser; import org.apache.lucene.queryparser.ext.Extensions; class NodeExtensions extends Extensions{ NodeExtensions (NodeParser parser) { super ('<'); // set extension field delimiter add ("node", parser); add ("", parser); } /** * reverses the default order so that extension string comes first, followed by the extended field name. * Therefore ext::term indicates the default extended field, and :field:term yields an empty extension string. */ @Override public Pair<String,String> splitExtensionField(String defaultField, String field) { int indexOf = field.indexOf(getExtensionFieldDelimiter()); if (indexOf < 0) return new Pair<String,String>(field, null); final String extensionKey = field.substring(0, indexOf); final String indexField = indexOf >= field.length()-1 ? null : field.substring(indexOf + 1); return new Pair<String,String>(indexField, extensionKey); } }