tinysearch/tinysearch: 使用Rus和Wasm構建的靜態網站的微型全文搜尋引擎

banq發表於2021-12-21

使用 Rust 和 Wasm 構建的靜態網站的小型全文搜尋引擎tinysearch ,tinysearch 是一個輕量級、快速、全文搜尋引擎。它專為靜態網站而設計。

tinysearch 是用 Rust 編寫的,然後編譯成 WebAssembly 以在瀏覽器中執行。它可以與靜態站點生成器一起使用,例如Jekyll、 HugoZola、 CobaltPelican

技術原理:

tinysearch 是來自文章“使用布隆過濾器編寫全文搜尋引擎”的 Python 程式碼的 Rust/WASM 埠。它可以被看作是lunr.js和 elasticlunr的替代品,它們對於較小的網站來說太重並且載入了大量的 JavaScript。

幕後,它使用Xor 過濾器——一種用於快速逼近集合成員資格的資料結構,它比布隆過濾器和布穀鳥過濾器小。每篇博文都被轉換成一個過濾器,然後使用bincode將其序列化為二進位制 blob 。請注意,底層技術可能會發生變化。

限制

  • 只找到整個單詞。因此,目前還沒有搜尋建議。這是減少記憶體使用的必要折衷。特里資料結構比異或過濾器大 10 倍左右。用於字首搜尋的緊湊資料結構的新研究可能會在未來解除這一限制。
  • 由於我們將所有文章的所有搜尋索引捆綁到一個靜態二進位制檔案中,因此我們建議僅將其用於中小型網站。每篇文章預計大約 2 kB 未壓縮(壓縮約 1 kb)。

 

相關文章