Jacky Zhao
2024-02-02 18cd58617dbe6a1b887ab08e4d29694bb1b3d0e0
fix: parallelize search indexing
1 files modified
21 ■■■■■ changed files
quartz/components/scripts/search.inline.ts 21 ●●●●● patch | view | raw | blame | history
quartz/components/scripts/search.inline.ts
@@ -464,8 +464,8 @@
  searchBar?.addEventListener("input", onType)
  window.addCleanup(() => searchBar?.removeEventListener("input", onType))
  await fillDocument(data)
  registerEscapeHandler(container, hideSearch)
  await fillDocument(data)
})
/**
@@ -475,13 +475,18 @@
 */
async function fillDocument(data: { [key: FullSlug]: ContentDetails }) {
  let id = 0
  const promises: Array<Promise<unknown>> = []
  for (const [slug, fileData] of Object.entries<ContentDetails>(data)) {
    await index.addAsync(id++, {
      id,
      slug: slug as FullSlug,
      title: fileData.title,
      content: fileData.content,
      tags: fileData.tags,
    })
    promises.push(
      index.addAsync(id++, {
        id,
        slug: slug as FullSlug,
        title: fileData.title,
        content: fileData.content,
        tags: fileData.tags,
      }),
    )
  }
  return await Promise.all(promises)
}