総ポスト数が100を超えているらしい。で、昔のメモを検索したら、かなりイマイチなことを今更知った。というわけで、やる気出して、
- 検索精度の改善
- 検索ワードのハイライト
に対応した。

元々は、hugo-PaperModが使用しているFuse.jsをデフォルトの設定で使用していた。Fuse.jsは非常に良くできた全文検索ライブラリで、これを日本語に対応させれば良い、とあたりをつけていたけど、結局オプションのパラメーターを少しいじって満足した。具体的には、Thresholdをかなり下げた。つまり検索精度は根本的には改善していない。また不都合を感じたら、真面目に日本語対応すると思う。
searchの結果には検索位置も含まれているため、ハイライトすること自体も簡単。返り値の構造体がパッとはわからなかったけど、Copilotに聞いて解決。
以下のように、Web版Copilotでsearch
のExampleを出して返り値を確認した。
const books = [
{
title: "Old Man's War",
author: {
firstName: 'John',
lastName: 'Scalzi'
}
}
];
const fuse = new Fuse(books, {
includeScore: true,
includeMatches: true,
keys: ['title', 'author.firstName']
});
// 検索結果の例
const result = fuse.search('john');
/* 結果:
[
{
item: {
title: "Old Man's War",
author: {
firstName: 'John',
lastName: 'Scalzi'
}
},
refIndex: 0,
score: 0.4, // スコアは0~1の範囲。0が完全一致
matches: [
{
indices: [[0, 3]], // "John" の位置
key: "author.firstName",
value: "John",
norm: 0.5
}
]
}
]
*/