This commit is contained in:
Simon Cambier
2022-07-14 21:55:50 +02:00
parent 7db4ddfddb
commit 7ea07e1c44
3 changed files with 13 additions and 10 deletions

View File

@@ -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()

View File

@@ -23,9 +23,9 @@ $: title = settings.showShortName ? note.basename : note.path
</span>
{#if matches.length > 0}
<span class="omnisearch-result__counter">
{matches.length}&nbsp;{matches.length > 1 ? "matches" : "match"}
</span>
<span class="omnisearch-result__counter">
{matches.length}&nbsp;{matches.length > 1 ? "matches" : "match"}
</span>
{/if}
</div>
<div class="omnisearch-result__body">

View File

@@ -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))