summary refs log tree commit diff
path: root/synapse/storage/search.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-10-22 16:54:56 +0100
committerErik Johnston <erik@matrix.org>2015-10-22 16:54:56 +0100
commit671ac699f1d4672bed3817b3cafb7498df99c030 (patch)
treeabdddc0b5aadc1bd11b74c89cbf7af761d694885 /synapse/storage/search.py
parentRename (diff)
downloadsynapse-671ac699f1d4672bed3817b3cafb7498df99c030.tar.xz
Actually filter results
Diffstat (limited to 'synapse/storage/search.py')
-rw-r--r--synapse/storage/search.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/synapse/storage/search.py b/synapse/storage/search.py
index e658e07dc7..9608b5d6a7 100644
--- a/synapse/storage/search.py
+++ b/synapse/storage/search.py
@@ -48,7 +48,7 @@ class SearchStore(SQLBaseStore):
         args = []
 
         # Make sure we don't explode because the person is in too many rooms.
-        # We filter the results regardless.
+        # We filter the results below regardless.
         if len(room_ids) < 500:
             clauses.append(
                 "room_id IN (%s)" % (",".join(["?"] * len(room_ids)),)
@@ -66,13 +66,13 @@ class SearchStore(SQLBaseStore):
 
         if isinstance(self.database_engine, PostgresEngine):
             sql = (
-                "SELECT ts_rank_cd(vector, query) AS rank, event_id"
+                "SELECT ts_rank_cd(vector, query) AS rank, room_id, event_id"
                 " FROM plainto_tsquery('english', ?) as query, event_search"
                 " WHERE vector @@ query"
             )
         elif isinstance(self.database_engine, Sqlite3Engine):
             sql = (
-                "SELECT 0 as rank, event_id FROM event_search"
+                "SELECT 0 as rank, room_id, event_id FROM event_search"
                 " WHERE value MATCH ?"
             )
         else:
@@ -90,6 +90,8 @@ class SearchStore(SQLBaseStore):
             "search_msgs", self.cursor_to_dict, sql, *([search_term] + args)
         )
 
+        results = filter(lambda row: row["room_id"] in room_ids, results)
+
         events = yield self._get_events([r["event_id"] for r in results])
 
         event_map = {