From cd5a7d31c6964f700924354f95f35627515941dd Mon Sep 17 00:00:00 2001 From: achmad Date: Thu, 28 May 2026 23:35:15 +0700 Subject: [PATCH] fix: improve search to only match title and excerpt, not raw HTML content --- components/search/SearchOverlay.tsx | 3 ++- lib/directus.ts | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/components/search/SearchOverlay.tsx b/components/search/SearchOverlay.tsx index bd1b000..bc85290 100644 --- a/components/search/SearchOverlay.tsx +++ b/components/search/SearchOverlay.tsx @@ -55,8 +55,9 @@ export default function SearchOverlay() { setLoading(true) try { const params = new URLSearchParams({ - search: query.trim(), 'filter[status][_eq]': 'published', + 'filter[_or][0][title][_icontains]': query.trim(), + 'filter[_or][1][excerpt][_icontains]': query.trim(), limit: '8', fields: 'id,title,slug,category.slug,category.name', access_token: process.env.NEXT_PUBLIC_DIRECTUS_TOKEN ?? '', diff --git a/lib/directus.ts b/lib/directus.ts index 4bd8f97..73af50d 100644 --- a/lib/directus.ts +++ b/lib/directus.ts @@ -144,8 +144,13 @@ export async function searchArticles(query: string): Promise { return getClient().request( readItems('articles', { fields: ['id', 'title', 'slug', 'category.slug', 'category.name'], - search: query, - filter: { status: { _eq: 'published' } }, + filter: { + _or: [ + { title: { _icontains: query } }, + { excerpt: { _icontains: query } }, + ], + status: { _eq: 'published' }, + }, limit: 8, }) ) as Promise