diff --git a/src/components/Search.tsx b/src/components/Search.tsx index 82f3273..b7098af 100644 --- a/src/components/Search.tsx +++ b/src/components/Search.tsx @@ -8,6 +8,7 @@ import type { Frontmatter } from "src/types"; type SearchItem = { title: string; description: string; + headings: string[]; frontmatter: Frontmatter; }; @@ -31,7 +32,7 @@ export default function SearchBar({ searchList }: Props) { }; const fuse = new Fuse(searchList, { - keys: ["title", "description"], + keys: ["title", "description", "headings"], includeMatches: true, minMatchCharLength: 2, threshold: 0.5, diff --git a/src/pages/search.astro b/src/pages/search.astro index b312757..fd75ad9 100644 --- a/src/pages/search.astro +++ b/src/pages/search.astro @@ -15,10 +15,11 @@ const posts = await Astro.glob("../contents/*.md"); // List of items to search in const searchList = posts .filter(({ frontmatter }) => !frontmatter.draft) - .map(({ frontmatter }) => ({ - title: frontmatter.title, - description: frontmatter.description, - frontmatter, + .map((post) => ({ + title: post.frontmatter.title, + description: post.frontmatter.description, + headings: post.getHeadings().map((h) => h.text), + frontmatter: post.frontmatter, })); ---