diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index e60d020..81e124b 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -554,6 +554,20 @@ function search_index($sid, $type, $text, $langcode) {
  *   An ID number identifying this particular item (e.g., node ID).
  */
 function search_mark_for_reindex($type, $sid) {
+  // See if the item is already marked for reindex. Only mark it to the current
+  // time if it has not already been marked, because re-marking would lower the
+  // reindexing priority.
+  $query = db_select('search_dataset', 'sd')
+    ->condition('type', $type)
+    ->condition('sid', $sid)
+    ->groupBy('sd.sid')
+    ->groupBy('sd.type');
+  $query->addExpression('MAX(sd.reindex)', 'latest');
+  $current = $query->execute()->fetchField();
+  if ($current) {
+    return;
+  }
+
   db_update('search_dataset')
     ->fields(array('reindex' => REQUEST_TIME))
     ->condition('type', $type)
