static String reason(BitDocIdSet actual, BitDocIdSet expected, IndexSearcher indexSearcher) throws IOException { StringBuilder builder = new StringBuilder(); builder.append("expected cardinality:").append(expected.bits().cardinality()).append('\n'); DocIdSetIterator iterator = expected.iterator(); for (int doc = iterator.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; doc = iterator.nextDoc()) { builder .append("Expected doc[") .append(doc) .append("] with id value ") .append(indexSearcher.doc(doc).get(UidFieldMapper.NAME)) .append('\n'); } builder.append("actual cardinality: ").append(actual.bits().cardinality()).append('\n'); iterator = actual.iterator(); for (int doc = iterator.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; doc = iterator.nextDoc()) { builder .append("Actual doc[") .append(doc) .append("] with id value ") .append(indexSearcher.doc(doc).get(UidFieldMapper.NAME)) .append('\n'); } return builder.toString(); }