跳至主要内容

[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);

其他說明