diff --git a/gajim/common/storage/archive.py b/gajim/common/storage/archive.py
index dd9c432eb3f24b7f237c306bc8aa71057c81c3b2..589fb5bc512c29c8a35c09c38538ad0cdfc58fb3 100644
--- a/gajim/common/storage/archive.py
+++ b/gajim/common/storage/archive.py
@@ -284,8 +284,9 @@ def _get_jid_ids_from_db(self) -> None:
             self._jid_ids[row.jid] = row
             self._jid_ids_reversed[row.jid_id] = row
 
-    def get_jid_from_id(self, jid_id: int) -> JidsTableRow:
-        return self._jid_ids_reversed[jid_id]
+    def get_jid_from_id(self, jid_id: int) -> Optional[JidsTableRow]:
+        # Use get as a fail-safe for cases where the JID ID table is incomplete
+        return self._jid_ids_reversed.get(jid_id)
 
     def get_jids_in_db(self) -> KeysView[JID]:
         return self._jid_ids.keys()
diff --git a/gajim/gtk/search_view.py b/gajim/gtk/search_view.py
index 08ddbc4e541036dfd822b3a138b86783eb741757..b3ecc3e3e801157d8e6f5dc244351e6b9b00db9f 100644
--- a/gajim/gtk/search_view.py
+++ b/gajim/gtk/search_view.py
@@ -191,6 +191,8 @@ def _add_results(self) -> None:
         for msg in itertools.islice(self._results_iterator, 25):
             if self._scope == 'everywhere':
                 archive_jid = app.storage.archive.get_jid_from_id(msg.jid_id)
+                if archive_jid is None:
+                    continue
                 result_row = ResultRow(
                     msg,
                     accounts[msg.account_id],