[note] fuse 搜尋引擎筆記
基本使用
要被搜尋的內容
const list = [
{
title: "Old Man's War",
author: {
firstName: 'John',
lastName: 'Chen',
},
},
{
title: 'The Lock Artist',
author: {
firstName: 'Steve',
lastName: 'Hamilton',
},
},
];
使用 fuse
keys
指定到的位置一定要是「字串」,否則不會得到任何結果
const options = {
keys: ['title', 'author.firstName'],
includeMatches: true,
};
const fuse = new Fuse(list, options);
// Change the pattern(使用者輸入的內容)
const pattern = '';
return fuse.search(pattern);
建立索引(Indexing)
indexing @ fuse.js
Fuse 在起始化時如果沒有提供索引會自動生成索引,但當要搜尋的內容太多時,可以手動先建立索引,以加快初始化的速度。
產生索引檔
const books = [
{
/* ... */
},
];
const options = { keys: ['title', 'author.firstName'] };
// 建立索引
const fuseIndex = Fuse.createIndex(options.keys, books);
// 寫成 JSON 檔
fs.writeFileSync('./fuse-index.json', JSON.stringify(fuseIndex.toJSON()));
// 或直接使用
const fuse = new Fuse(books, options, myIndex);
讀取索引檔
// 當 App 啟動時
// 載入 JSON 檔
const fuseIndex = await require('fuse-index.json');
// deserialize JSON
const myIndex = Fuse.parseIndex(searchIndex);
const fuse = new Fuse(books, options, myIndex);
其他說明
- 可以根據每個不同的 key 設定權重(weight)