int partitionSize = fip.getPartitionSize();
int numPartitions = (int) Math.ceil(taxoReader.getSize() / (double) partitionSize);
final IntsRef ordinals = new IntsRef(32);
for (String dim : DIMENSIONS) {
CategoryListParams clp = fip.getCategoryListParams(new CategoryPath(dim));
int partitionOffset = 0;
for (int partition = 0; partition < numPartitions; partition++, partitionOffset += partitionSize) {
final CategoryListIterator cli = clp.createCategoryListIterator(partition);
for (AtomicReaderContext context : indexReader.leaves()) {
if (cli.setNextReader(context)) { // not all fields may exist in all segments
// remove that field from the list of DocValues fields
docValuesFields.remove(clp.field + PartitionsUtils.partitionName(partition));
int maxDoc = context.reader().maxDoc();