簡體   English   中英

Javascript 全文搜索

[英]Full-Text Search in Javascript

您將如何在 Javascript 中實現“窮人”的全文搜索?

我正在實現一個沒有數據庫后端的靜態網頁,該頁面通過 Ajax JSON 加載加載了幾千條短文本字符串記錄。 我希望用戶能夠通過關鍵字搜索有效地過濾這些字符串,理想情況下,使用比簡單地迭代每個字符串並執行 Javascript .indexOf()更聰明的方法。

我想過將我的 JSON 呈現為隱藏的 HTML,並使用 jQuery DOM 搜索插件,但我懷疑這會比遍歷我的 JSON 列表更快。

幾千條記錄

這還不算多,請查看JavaScript中的全文搜索以及 40k 行中的全文搜索演示。

。指數()

JavaScript 在文本操作方面有點受限制,但這將完成這項工作。

這是一個非常簡單的手冊,非常適合您的問題。 Jekyll + lunr.js = 靜態網站,使用 JavaScript 進行強大的全文搜索

我有使用少量數據構建靜態網頁的經驗,通常,性能是最后一個問題。

如果您正在尋找非常易於使用的東西的另一種解決方案: ss-search

2021 年更新,沒有 Jquery

(使用 Fuse.js)

因為您現在可能也想進行模糊搜索 您可以使用像Fuse.js(演示)這樣的來非常輕松地搜索(嵌套)對象數組

例如,如果您有一個數組 ob 對象:

[
  {
    "title": "Old Man's War",
    "author": "John Scalzi",
    "tags": ["fiction"]
  },
  {
    "title": "The Lock Artist",
    "author": "Steve",
    "tags": ["thriller"]
  }
]

要搜索,只需在初始化后使用fuse.search('text')

const options = {
  includeScore: true,
  // Search in `author` and in `tags` array
  keys: ['author', 'tags']
}

const fuse = new Fuse(list, options)

const result = fuse.search('OldMans War')

請參閱限制結果的選項列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM