final int numParents = atLeast(200);
IndexWriterConfig cfg = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
cfg.setMergePolicy(newLogMergePolicy());
final RandomIndexWriter writer = new RandomIndexWriter(random(), newDirectory(), cfg);
final Document parentDoc = new Document();
final NumericDocValuesField parentVal = new NumericDocValuesField("parent_val", 0L);
parentDoc.add(parentVal);
final StringField parent = new StringField("parent", "true", Store.YES);
parentDoc.add(parent);
for (int i = 0; i < numParents; ++i) {
List<Document> documents = new ArrayList<Document>();
final int numChildren = random().nextInt(10);
for (int j = 0; j < numChildren; ++j) {
final Document childDoc = new Document();
childDoc.add(new NumericDocValuesField("child_val", random().nextInt(5)));
documents.add(childDoc);
}
parentVal.setLongValue(random().nextInt(50));
documents.add(parentDoc);
writer.addDocuments(documents);
}
writer.forceMerge(1);
final DirectoryReader indexReader = writer.getReader();