diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 946c5e4..caa0d5e 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -1776,5 +1776,30 @@ function taxonomy_taxonomy_term_delete($term) {
 }
 
 /**
+ * Implements hook_field_delete_instance()
+ */
+function taxonomy_field_delete_instance($instance) {
+  if (variable_get('taxonomy_maintain_index_table', TRUE) && $instance['entity_type'] == 'node') {
+    $field_info = field_info_field($instance['field_name']);
+    if ($field_info['type'] == 'taxonomy_term_reference') {
+      $vocabulary = $field_info['settings']['allowed_values'][0]['vocabulary'];
+      $nids = db_select('taxonomy_index', 'ti');
+      $nids->distinct();
+      $nids->fields('ti', array('nid'));
+      $nids->join('taxonomy_term_data', 'td', 'td.tid = ti.tid');
+      $nids->join('taxonomy_vocabulary', 'tv', 'tv.vid = td.vid');
+      $nids->condition('tv.machine_name', $vocabulary);
+
+      // Rebuild possibly lost entries
+      foreach ($nids->execute() as $item) {
+        db_delete('taxonomy_index')->condition('nid', $item->nid)->execute();
+        $node = node_load($item->nid);
+        field_attach_update('node', $node);
+      }
+    }
+  }
+}
+
+/**
  * @} End of "defgroup taxonomy_index"
  */
