}
};
@Override
public FieldsConsumer fieldsConsumer(SegmentWriteState state) throws IOException {
final BloomFilteredFieldsConsumer fieldsConsumer = bloomPostings.fieldsConsumer(state);
return new FieldsConsumer() {
@Override
public void write(Fields fields) throws IOException {
Fields maskedFields = new FilterLeafReader.FilterFields(fields) {
@Override
public Iterator<String> iterator() {
return Iterators.filter(this.in.iterator(), Predicates.not(UID_FIELD_FILTER));
}
};
fieldsConsumer.getDelegate().write(maskedFields);
maskedFields = new FilterLeafReader.FilterFields(fields) {
@Override
public Iterator<String> iterator() {
return Iterators.singletonIterator(UidFieldMapper.NAME);
}
};
// only go through bloom for the UID field
fieldsConsumer.write(maskedFields);
}
@Override
public void close() throws IOException {
fieldsConsumer.close();
}
};
}