一個輕量級 JavaScript 全文搜索庫,輕松實現(xiàn)站內離線搜索
介紹
Lunr.js是個用于瀏覽器的輕量級 JavaScript 全文搜索引擎。它為JSON文檔建立索引,并提供一個簡單的搜索界面來檢索與文本查詢比較匹配的文檔對于一些小型的博客、開發(fā)者文檔或 Wiki 網(wǎng)站來說,完全可以通過它實現(xiàn)站內離線搜索:
為什么使用它?
對于已經(jīng)將所有數(shù)據(jù)存儲在客戶端中的Web應用程序,也能夠在客戶端上搜索該數(shù)據(jù)也是很有意義的。這樣可以節(jié)省在服務器上添加額外的壓縮服務。本地搜索索引將更快,沒有網(wǎng)絡開銷,并且即使沒有網(wǎng)絡連接也將保持可用。
Github
目前Github上star數(shù)6.6k
- https://github.com/olivernn/lunr.js
簡單示例
- var idx = lunr(function () {
- this.field('title')
- this.field('body')
- this.add({
- "title": "Twelfth-Night",
- "body": "If music be the food of love, play on: Give me excess of it…",
- "author": "William Shakespeare",
- "id": "1"
- })
- })
然后再像下面這樣
- idx.search("love")
這將返回一個匹配文檔列表,其中包含與搜索查詢的匹配程度以及與該匹配相關的任何關聯(lián)元數(shù)據(jù)的分數(shù):
- [
- {
- "ref": "1",
- "score": 0.3535533905932737,
- "matchData": {
- "metadata": {
- "love": {
- "body": {}
- }
- }
- }
- }
- ]
安裝
只需在要使用它的頁面中包含lunr.js源文件。所有現(xiàn)代瀏覽器均支持Lunr.js。
- npm install lunr
特性
(翻譯或不夠準確)
- 全文搜索支持14種語言
- 在查詢時提升術語或在索引時提升整個文檔
- 范圍搜索到特定字段
- 模糊術語與通配符匹配或編輯距離
總結
在之前的文章中介紹過另一個全文搜索庫FlexSearch.js,感興趣的小伙伴也可以去看一看介紹,在這里也提前祝大家工作順利,萬事如意,身體健康!