検索については、 Fuse.js を用いて実装しています。
Note
今後の開発予定からの実装です。
検索周りの実装概要
記事収集時に posts-meta.json を生成し、これを対象に検索を行っています。
posts-meta.json へのアクセス、 Fuse.js によるあいまい検索、ともにクライアントで実行しています。
あいまい検索の設定については、./src/lib/search.ts で行っています。
各々良いように調整してください。
import Fuse from "fuse.js";
import { PostMeta } from "../../types/post";
const searchPosts = (posts: PostMeta[], query: string) => {
const fuse = new Fuse(posts, {
keys: [
{ name: "title", weight: 0.5 },
{ name: "description", weight: 0.2 },
{ name: "contentMd", weight: 0.1 },
{ name: "tags", weight: 0.2 },
],
threshold: 0.45,
minMatchCharLength: 1,
ignoreLocation: true,
});
return fuse.search(query).map((r) => r.item);
};
export default searchPosts;