Index: lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java	(revision 1378076)
+++ lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java	(revision 1378077)
@@ -186,6 +186,10 @@
     }
 
     public void collect(int doc) throws IOException {
+      if (facetFieldDocTermOrds.isEmpty()) {
+        return;
+      }
+
       int groupOrd = groupFieldTermsIndex.getOrd(doc);
       if (facetOrdTermsEnum != null) {
         reuse = facetFieldDocTermOrds.lookup(doc, reuse);
@@ -240,6 +244,9 @@
       segmentTotalCount = 0;
 
       segmentGroupedFacetHits.clear();
+      if (facetFieldDocTermOrds.isEmpty()) {
+        return;
+      }
       for (GroupedFacetHit groupedFacetHit : groupedFacetHits) {
         int groupOrd = groupFieldTermsIndex.binarySearchLookup(groupedFacetHit.groupValue, spare);
         if (groupOrd < 0) {
\ No newline at end of file
Index: lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java	(revision 1378076)
+++ lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java	(revision 1378077)
@@ -21,6 +21,7 @@
 import org.apache.lucene.document.*;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.DocValues;
+import org.apache.lucene.index.NoMergePolicy;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.IndexSearcher;
@@ -213,6 +214,82 @@
     assertEquals(2, entries.get(1).getCount());
 
     w.close();
+    indexSearcher.getIndexReader().close();
+    dir.close();
+  }
+
+  public void testMVGroupedFacetingWithDeletes() throws Exception {
+    final String groupField = "hotel";
+    FieldType customType = new FieldType();
+    customType.setStored(true);
+
+    Directory dir = newDirectory();
+    RandomIndexWriter w = new RandomIndexWriter(
+        random(),
+        dir,
+        newIndexWriterConfig(TEST_VERSION_CURRENT,
+            new MockAnalyzer(random())).setMergePolicy(NoMergePolicy.COMPOUND_FILES));
+    boolean useDv = false;
+
+    // 0
+    Document doc = new Document();
+    addField(doc, "x", "x", useDv);
+    w.addDocument(doc);
+
+    doc = new Document();
+    addField(doc, groupField, "a", useDv);
+    addField(doc, "airport", "ams", useDv);
+    w.addDocument(doc);
+
+    w.commit();
+    w.deleteDocuments(new TermQuery(new Term("airport", "ams")));
+
+    // 0
+    doc = new Document();
+    addField(doc, groupField, "a", useDv);
+    addField(doc, "airport", "ams", useDv);
+    w.addDocument(doc);
+
+    // 1
+    doc = new Document();
+    addField(doc, groupField, "a", useDv);
+    addField(doc, "airport", "dus", useDv);
+    w.addDocument(doc);
+
+    // 2
+    doc = new Document();
+    addField(doc, groupField, "b", useDv);
+    addField(doc, "airport", "ams", useDv);
+    w.addDocument(doc);
+
+    // 3
+    doc = new Document();
+    addField(doc, groupField, "b", useDv);
+    addField(doc, "airport", "ams", useDv);
+    w.addDocument(doc);
+
+    // 4
+    doc = new Document();
+    addField(doc, groupField, "b", useDv);
+    addField(doc, "airport", "ams", useDv);
+    w.addDocument(doc);
+
+    w.commit();
+    w.close();
+    IndexSearcher indexSearcher = new IndexSearcher(DirectoryReader.open(dir));
+    AbstractGroupFacetCollector groupedAirportFacetCollector = createRandomCollector(groupField, "airport", null, true, useDv);
+    indexSearcher.search(new MatchAllDocsQuery(), groupedAirportFacetCollector);
+    TermGroupFacetCollector.GroupedFacetResult airportResult = groupedAirportFacetCollector.mergeSegmentResults(10, 0, false);
+    assertEquals(3, airportResult.getTotalCount());
+    assertEquals(0, airportResult.getTotalMissingCount());
+
+    List<TermGroupFacetCollector.FacetEntry> entries = airportResult.getFacetEntries(0, 10);
+    assertEquals(2, entries.size());
+    assertEquals("ams", entries.get(0).getValue().utf8ToString());
+    assertEquals(2, entries.get(0).getCount());
+    assertEquals("dus", entries.get(1).getValue().utf8ToString());
+    assertEquals(1, entries.get(1).getCount());
+
     indexSearcher.getIndexReader().close();
     dir.close();
   }
