diff --git a/module/VuFind/src/VuFind/Recommend/SwitchQuery.php b/module/VuFind/src/VuFind/Recommend/SwitchQuery.php
index 0b4e8907ee32df3177ca7425f4080d1ae7b0c2a8..816f8012390eef239e19c1be7befb5dbf9d3e57f 100644
--- a/module/VuFind/src/VuFind/Recommend/SwitchQuery.php
+++ b/module/VuFind/src/VuFind/Recommend/SwitchQuery.php
@@ -144,6 +144,11 @@ class SwitchQuery implements RecommendInterface
         // Get the query to manipulate:
         $query = $this->results->getParams()->getDisplayQuery();
 
+        // If the query is of a type that should be skipped, go no further:
+        if ($this->queryShouldBeSkipped($query)) {
+            return;
+        }
+
         // Perform all checks (based on naming convention):
         $methods = get_class_methods($this);
         $checks = array();
@@ -160,6 +165,24 @@ class SwitchQuery implements RecommendInterface
         }
     }
 
+    /**
+     * Should the query be ignored when making recommendations?
+     *
+     * @param string $query Query to check
+     *
+     * @return bool
+     */
+    protected function queryShouldBeSkipped($query)
+    {
+        // If this is an ID list query, it was probably generated by New Items,
+        // Course Reserves, etc., and thus should not be further manipulated by
+        // the user.
+        if (substr($query, 0, 3) == 'id:') {
+            return true;
+        }
+        return false;
+    }
+
     /**
      * Does the query contain lowercase boolean operators that should be uppercased?
      *