package org.carrot2.elasticsearch;
/**
* The source of data for a logical document field.
*/
enum FieldSource {
HIGHLIGHT("highlight."),
FIELD("fields."),
SOURCE("_source.");
/**
* Field specification prefix for this source.
*/
private final String fieldSpecPrefix;
static class ParsedFieldSource {
final FieldSource source;
final String fieldName;
ParsedFieldSource(FieldSource source, String fieldName) {
this.source = source;
this.fieldName = fieldName;
}
}
static ParsedFieldSource parseSpec(String fieldSourceSpec) {
if (fieldSourceSpec != null) {
for (FieldSource fs : cachedByOrdinal) {
if (fieldSourceSpec.startsWith(fs.fieldSpecPrefix)) {
return new ParsedFieldSource(fs, fieldSourceSpec.substring(fs.fieldSpecPrefix.length()));
}
}
}
return null;
}
static FieldSource [] cachedByOrdinal = values();
static FieldSource fromOrdinal(int ordinal) {
return cachedByOrdinal[ordinal];
}
FieldSource(String fieldSpecPrefix) {
this.fieldSpecPrefix = fieldSpecPrefix;
}
}