Skip to content

Commit 275ecf5

Browse files
committed
fix: add demo url to literal results
1 parent c2b3756 commit 275ecf5

2 files changed

Lines changed: 30 additions & 3 deletions

File tree

app/src/handlers/api/search.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,10 @@ pub async fn search(
342342
CASE
343343
WHEN qt.raw_q <> '' AND STRPOS(lower(COALESCE(p.code_url, '')), qt.raw_q) > 0 THEN 1.0
344344
ELSE 0.0
345+
END,
346+
CASE
347+
WHEN qt.raw_q <> '' AND STRPOS(lower(COALESCE(p.demo_url, '')), qt.raw_q) > 0 THEN 1.0
348+
ELSE 0.0
345349
END
346350
)::double precision AS literal_score
347351
FROM filtered_projects p
@@ -357,7 +361,8 @@ pub async fn search(
357361
STRPOS(lower(p.search_repo), qt.raw_q) > 0 OR
358362
STRPOS(lower(COALESCE(p.display_name, '')), qt.raw_q) > 0 OR
359363
STRPOS(lower(p.search_username), qt.raw_q) > 0 OR
360-
STRPOS(lower(COALESCE(p.code_url, '')), qt.raw_q) > 0
364+
STRPOS(lower(COALESCE(p.code_url, '')), qt.raw_q) > 0 OR
365+
STRPOS(lower(COALESCE(p.demo_url, '')), qt.raw_q) > 0
361366
)
362367
ORDER BY literal_score DESC
363368
LIMIT $12

frontend/src/routes/+page.svelte

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@
1919
2020
type ViewMode = 'search' | 'cards';
2121
22+
const LOW_SCORE_THRESHOLD = 0.5;
23+
2224
let query = $state(page.url.searchParams.get('q') ?? '');
2325
let results = $state<SearchResult[]>([]);
26+
let showLowScore = $state(false);
27+
let validResults = $derived(showLowScore ? results : results.filter((r) => r.score !== null && r.score >= LOW_SCORE_THRESHOLD));
2428
let loading = $state(false);
2529
let searched = $state(false);
2630
let viewMode = $state<ViewMode>('search');
@@ -221,13 +225,31 @@
221225
{#if !loading && results.length === 0}
222226
<p class="py-12 text-center text-muted-foreground">No results found for "{query}"</p>
223227
{:else if !loading && results.length > 0}
228+
{@const displayResults = validResults.length > 0 ? validResults : results}
224229
{#if viewMode === 'search'}
225-
<SearchView {results} />
230+
<SearchView results={displayResults} />
226231
{:else}
227-
<CardsView {results} />
232+
<CardsView results={displayResults} />
228233
{/if}
229234
{/if}
230235

236+
{#if validResults.length !== results.length && validResults.length > 0}
237+
<p class="mt-4 text-center text-sm text-muted-foreground">
238+
{results.length - validResults.length} result{results.length - validResults.length !== 1 ? 's' : ''} hidden...
239+
<button
240+
class="underline hover:text-foreground cursor-pointer"
241+
onclick={() => (showLowScore = !showLowScore)}
242+
>
243+
{showLowScore ? 'Hide' : 'Show'} them?
244+
</button>
245+
</p>
246+
{/if}
247+
248+
{#if loading && results.length > 0}
249+
<p class="py-12 text-center text-muted-foreground">Loading more results…</p>
250+
{/if}
251+
252+
231253
{#if !loading && totalPages > 1}
232254
<div class="mt-6 flex items-center justify-center gap-2">
233255
<Button

0 commit comments

Comments
 (0)