From ccd6bf2d5f35c0c194b23a192ef13ab5ed6791e2 Mon Sep 17 00:00:00 2001 From: Mega Yu Date: Fri, 15 May 2026 23:04:01 +0800 Subject: [PATCH] feat(search): improve alias handling for snippet display in search results --- src/main/frontend/worker/search.cljs | 8 ++-- src/test/frontend/worker/search_test.cljs | 54 +++++++++++++++++++++++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index e660d652f1..80680a079d 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -668,9 +668,11 @@ DROP TRIGGER IF EXISTS blocks_au; (when (include-search-block? conn block code-class option) (let [alias-source (some-> (first (:block/_alias block)) (select-keys [:block/uuid :block/title])) - alias-match (matched-alias q block) - display-title (if (:enable-snippet? option) - (ensure-highlighted-snippet snippet title q) + alias-match (matched-alias q block) + display-title (if (:enable-snippet? option) + (if (page-or-object? block) + (ensure-highlighted-snippet snippet (:block/title block) q) + (ensure-highlighted-snippet snippet title q)) (if (page-or-object? block) (:block/title block) (or snippet title))) diff --git a/src/test/frontend/worker/search_test.cljs b/src/test/frontend/worker/search_test.cljs index 92db3721f9..db01cd81ec 100644 --- a/src/test/frontend/worker/search_test.cljs +++ b/src/test/frontend/worker/search_test.cljs @@ -617,6 +617,60 @@ (is (= "Artificial Intelligence" (:block/title result))) (is (not (contains? result :alias)))))))) +(deftest search-result-snippet-uses-canonical-page-title + (testing "page snippets do not display alias titles from the search index" + (let [page-id #uuid "00000000-0000-0000-0000-000000000242" + page {:db/id 1 + :block/uuid page-id + :block/title "Artificial Intelligence" + :block/alias [{:db/id 2 + :block/uuid #uuid "00000000-0000-0000-0000-000000000243" + :block/title "ai"}]}] + (with-redefs [d/entity (fn [_db [_attr id]] + (when (= id page-id) + page)) + ldb/page? (fn [entity] (= (:db/id entity) (:db/id page))) + ldb/built-in? (constantly false) + ldb/hidden? (constantly false)] + (let [result (#'search/search-result->block-result + (atom :db) + "Artificial" + nil + {:enable-snippet? true} + {:id (str page-id) + :page (str page-id) + :title "Artificial Intelligence ai" + :snippet "$pfts_2lqh>$Artificial$block-result + (atom :db) + "Artificial" + nil + {:enable-snippet? true} + {:id (str page-id) + :page (str page-id) + :title "Artificial Intelligence ai" + :snippet "$pfts_2lqh>$Artificial$