diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php
index 9d14e741060a572693229941c1332d93507ba49a..0fb7db429307269cefa66478212933f82a6ddf38 100644
--- a/database/backends/PostgresSmartBackend.php
+++ b/database/backends/PostgresSmartBackend.php
@@ -64,6 +64,9 @@ class PostgresSmartBackend implements Backend
         $tsQueryFunction = $this->tsQueryFunction();
         $rankingFunction = $this->rankingFunction();
         return $this->db->prepare("
+            WITH matching_backlog AS (
+              SELECT * FROM backlog WHERE tsv @@ $tsQueryFunction
+            )
             SELECT
               ranked_messages.bufferid,
               ranked_messages.buffername,
@@ -101,7 +104,7 @@ class PostgresSmartBackend implements Backend
                     query,
                     $rankingFunction AS rank_value
                   FROM
-                    backlog
+                    matching_backlog AS backlog
                     JOIN buffer ON backlog.bufferid = buffer.bufferid
                     , $tsQueryFunction query
                   WHERE buffer.userid = :userid
@@ -150,6 +153,9 @@ class PostgresSmartBackend implements Backend
         $tsQueryFunction = $this->tsQueryFunction();
         $rankingFunction = $this->rankingFunction();
         return $this->db->prepare("
+            WITH matching_backlog AS (
+              SELECT * FROM backlog WHERE tsv @@ $tsQueryFunction
+            )
             SELECT
               matching_messages.messageid,
               matching_messages.time,
@@ -168,7 +174,7 @@ class PostgresSmartBackend implements Backend
                  query,
                  $rankingFunction AS rank_value
                FROM
-                 backlog
+                 matching_backlog AS backlog
                  JOIN buffer ON backlog.bufferid = buffer.bufferid
                  , $tsQueryFunction query
                WHERE buffer.userid = :userid