模糊搜尋演算法
- fuse.js:
fuse.js
提供多種模糊搜尋演算法,包括基於編輯距離和加權匹配,支援自訂演算法。 - fuzzysort:
fuzzysort
使用快速的模糊排序演算法,根據相似度對結果進行排序,提供更精確的搜尋體驗。 - fuzzy-search:
fuzzy-search
使用簡單的編輯距離演算法,專注於快速搜尋和低記憶體使用。 - fuzzysearch:
fuzzysearch
採用高效的模糊搜尋演算法,特別適合處理大型資料集。 - elasticlunr:
elasticlunr
使用基於編輯距離的模糊搜尋演算法,支援拼寫錯誤和部分匹配。
效能
- fuse.js:
fuse.js
在中型資料集上表現優異,但複雜的搜尋配置可能會影響效能。 - fuzzysort:
fuzzysort
在搜尋和排序方面都提供高效能,特別是在處理需要排序的搜尋結果時。 - fuzzy-search:
fuzzy-search
設計上注重效能,特別是在處理大型資料集時。 - fuzzysearch:
fuzzysearch
提供快速的搜尋效能,特別適合處理大量資料。 - elasticlunr:
elasticlunr
在小型資料集上表現良好,但隨著資料量增加,效能可能會下降。
自訂性
- fuse.js:
fuse.js
提供高度自訂性,允許開發者自訂搜尋演算法、權重和資料結構。 - fuzzysort:
fuzzysort
允許自訂排序邏輯,但對搜尋過程的自訂較少。 - fuzzy-search:
fuzzy-search
自訂性較低,主要提供基本的搜尋功能。 - fuzzysearch:
fuzzysearch
不支援自訂,但提供簡單易用的介面。 - elasticlunr:
elasticlunr
允許自訂搜尋權重和範圍,但功能相對有限。
範例程式碼
- fuse.js:
fuse.js
範例程式碼const Fuse = require('fuse.js'); const list = [ { title: 'Old Town Road', artist: 'Lil Nas X' }, { title: 'Bad Guy', artist: 'Billie Eilish' }, { title: 'Truth Hurts', artist: 'Lizzo' }, ]; const options = { keys: ['title', 'artist'], threshold: 0.3 }; const fuse = new Fuse(list, options); const result = fuse.search('bad'); console.log(result);
- fuzzysort:
fuzzysort
範例程式碼const fuzzysort = require('fuzzysort'); const results = fuzzysort.go('apple', ['banana', 'apple', 'grape']); console.log(results);
- fuzzy-search:
fuzzy-search
範例程式碼const { fuzzySearch } = require('fuzzy-search'); const items = ['apple', 'banana', 'cherry']; const results = fuzzySearch('appl', items); console.log(results);
- fuzzysearch:
fuzzysearch
範例程式碼const fuzzysearch = require('fuzzysearch'); const result = fuzzysearch('hello', 'hallo world'); console.log(result);
- elasticlunr:
elasticlunr
範例程式碼const elasticlunr = require('elasticlunr'); const index = elasticlunr(function () { this.addField('title'); this.addField('body'); this.setRef('id'); }); index.addDoc({ id: 1, title: 'Hello World', body: 'This is a test document.' }); index.addDoc({ id: 2, title: 'Elastic Lunr', body: 'A lightweight search library.' }); const results = index.search('test'); console.log(results);