diff --git a/src/components/ModalVault.svelte b/src/components/ModalVault.svelte index ce5ca32..000a540 100644 --- a/src/components/ModalVault.svelte +++ b/src/components/ModalVault.svelte @@ -28,8 +28,8 @@ $: if (searchQuery) { resultNotes = [] } -onMount(() => { - reindexNotes() +onMount(async () => { + await reindexNotes() searchQuery = lastSearch eventBus.enable("vault") eventBus.on("vault", "enter", openNoteAndCloseModal) @@ -47,7 +47,7 @@ onDestroy(() => { async function updateResults() { query = new Query(searchQuery) - resultNotes = await getSuggestions(query) + resultNotes = (await getSuggestions(query)).sort((a, b) => b.score - a.score) lastSearch = searchQuery selectedIndex = 0 scrollIntoView() diff --git a/src/components/ResultItemVault.svelte b/src/components/ResultItemVault.svelte index 72f38b4..2448481 100644 --- a/src/components/ResultItemVault.svelte +++ b/src/components/ResultItemVault.svelte @@ -23,9 +23,9 @@ $: title = settings.showShortName ? note.basename : note.path {#if matches.length > 0} - - {matches.length} {matches.length > 1 ? "matches" : "match"} - + + {matches.length} {matches.length > 1 ? "matches" : "match"} + {/if}
diff --git a/src/search.ts b/src/search.ts index 0985479..45862ea 100644 --- a/src/search.ts +++ b/src/search.ts @@ -227,6 +227,11 @@ export async function getSuggestions( let results = await search(query) if (!results.length) return [] + // Extract tags from the query + const tags = query.segments + .filter(s => s.value.startsWith('#')) + .map(s => s.value) + // Either keep the 50 first results, // or the one corresponding to `singleFile` if (options?.singleFilePath) { @@ -238,12 +243,9 @@ export async function getSuggestions( results = results.slice(0, 50) // Put the results with tags on top - const tags = query.segments - .filter(s => s.value.startsWith('#')) - .map(s => s.value) for (const tag of tags) { for (const result of results) { - if (result.tags.includes(tag)) { + if ((result.tags ?? []).includes(tag)) { result.score *= 100 } } @@ -268,6 +270,7 @@ export async function getSuggestions( query.segments.some(s => w.startsWith(s.value)), ), ...query.segments.filter(s => s.exact).map(s => s.value), + ...tags, ] const matches = getMatches(note.content, stringsToRegex(foundWords))