From cb851fc217175149a9708c0682f82ae2ccc4350f Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:14:21 -0700 Subject: [PATCH] refactor: switch global search from backend.search() to search_ids() The global search endpoint only needs document IDs (takes top 3), not highlights or scores. Using search_ids() avoids building SearchHit dicts and removes the last production caller of backend.search(). Co-Authored-By: Claude Opus 4.6 --- src/documents/views.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/documents/views.py b/src/documents/views.py index 7eeb6c33c..430a18e57 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -3109,20 +3109,16 @@ class GlobalSearchView(PassUserMixin): docs = all_docs.filter(title__icontains=query)[:OBJECT_LIMIT] else: user = None if request.user.is_superuser else request.user - fts_results = get_backend().search( + matching_ids = get_backend().search_ids( query, user=user, - page=1, - page_size=1000, - sort_field=None, - sort_reverse=False, search_mode=SearchMode.TEXT, ) - docs_by_id = all_docs.in_bulk([hit["id"] for hit in fts_results.hits]) + docs_by_id = all_docs.in_bulk(matching_ids) docs = [ - docs_by_id[hit["id"]] - for hit in fts_results.hits - if hit["id"] in docs_by_id + docs_by_id[doc_id] + for doc_id in matching_ids + if doc_id in docs_by_id ][:OBJECT_LIMIT] saved_views = ( get_objects_for_user_owner_aware(