From ca077ba1e3585c08e04e9ea6c0eed309ac11de21 Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:23:14 -0700 Subject: [PATCH] fix: reuse notes snippet generator across docs in highlight_hits() The notes SnippetGenerator was being recreated per document instead of lazily initialized once like the content generator. Co-Authored-By: Claude Opus 4.6 --- src/documents/search/_backend.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/documents/search/_backend.py b/src/documents/search/_backend.py index daad537b6..03eff5f21 100644 --- a/src/documents/search/_backend.py +++ b/src/documents/search/_backend.py @@ -536,6 +536,7 @@ class TantivyBackend: searcher = self._index.searcher() snippet_generator = None + notes_snippet_generator = None hits: list[SearchHit] = [] for rank, doc_id in enumerate(doc_ids, start=1): @@ -571,13 +572,14 @@ class TantivyBackend: highlights["content"] = str(content_snippet) if "notes" in doc_dict: - notes_generator = tantivy.SnippetGenerator.create( - searcher, - user_query, - self._schema, - "notes", - ) - notes_snippet = notes_generator.snippet_from_doc(actual_doc) + if notes_snippet_generator is None: + notes_snippet_generator = tantivy.SnippetGenerator.create( + searcher, + user_query, + self._schema, + "notes", + ) + notes_snippet = notes_snippet_generator.snippet_from_doc(actual_doc) if notes_snippet: highlights["notes"] = str(notes_snippet)