use of org.apache.lucene.queries.function.docvalues.StrDocValues in project lucene-solr by apache.
the class MultiStringFunction method getValues.
@Override
public FunctionValues getValues(Map context, LeafReaderContext readerContext) throws IOException {
final FunctionValues[] valsArr = new FunctionValues[sources.length];
for (int i = 0; i < sources.length; i++) {
valsArr[i] = sources[i].getValues(context, readerContext);
}
return new StrDocValues(this) {
@Override
public String strVal(int doc) throws IOException {
CharSequence cs = func(doc, valsArr);
return cs != null ? cs.toString() : null;
}
@Override
public boolean exists(int doc) throws IOException {
boolean exists = true;
for (FunctionValues val : valsArr) {
exists = exists & val.exists(doc);
}
return exists;
}
@Override
public boolean bytesVal(int doc, BytesRefBuilder bytes) throws IOException {
bytes.clear();
CharSequence cs = func(doc, valsArr);
if (cs != null) {
bytes.copyChars(func(doc, valsArr));
return true;
} else {
return false;
}
}
@Override
public String toString(int doc) throws IOException {
StringBuilder sb = new StringBuilder();
sb.append(name()).append('(');
boolean firstTime = true;
for (FunctionValues vals : valsArr) {
if (firstTime) {
firstTime = false;
} else {
sb.append(',');
}
sb.append(vals.toString(doc));
}
sb.append(')');
return sb.toString();
}
@Override
public ValueFiller getValueFiller() {
return new ValueFiller() {
private final MutableValueStr mval = new MutableValueStr();
@Override
public MutableValue getValue() {
return mval;
}
@Override
public void fillValue(int doc) throws IOException {
mval.exists = bytesVal(doc, mval.value);
}
};
}
};
}
Aggregations