Tinysearch是一種輕巧,快速,全文搜索引擎。它是為靜態網站設計的。
Tinysearch用Rust編寫,然後編譯到WebAssembly中以在瀏覽器中運行。
它可以與Jekyll,Hugo,Zola,Cobalt或Pelican等靜態站點發電機一起使用。

我的博客的測試索引文件包含大約40個帖子創建的WASM有效載荷為99KB(49KB GZBIPPPECT,40KB BROTLI)。
比上面的演示圖像小。是的。
Tinysearch是Python代碼的Rust/WASM端口,該文章“使用Bloom過濾器編寫全文搜索引擎”。它可以看作是Lunr.js和Elasticlunr的替代方法,它們對於較小的網站來說太重了,並加載了許多JavaScript。
在引擎蓋下,它使用XOR過濾器 - 一個數據架構,用於快速近似設置會員資格,該構件比Bloom和Cuckoo過濾器小。每個博客文章都將轉換為一個過濾器,然後使用Bincode將其序列化為二進制BLOB。請注意,基礎技術可能會發生變化。
構建WASM模塊需要WASM-PACK。安裝它
cargo install wasm-pack要優化JavaScript輸出,您還需要Terser:
npm install terser -g
如果您想使WebAssembly盡可能小,我們也建議您也安裝Binaryen。在MacOS上,您可以使用Homebrew安裝它:
brew install binaryen另外,您可以從發布頁面下載二進製文件或使用OS軟件包管理器。
之後,您可以安裝Tinysearch本身:
cargo install tinysearch
一個包含索引內容的JSON文件作為輸入。請查看示例文件。
JSON文檔中的body場是可選的,可以跳過索引帖子標題。
創建索引後,您可以運行
tinysearch fixtures/index.json
這將創建一個WASM模塊和JavaScript膠水代碼,以將其集成到您的網站中。您可以從任何WebServer打開demo.html以查看結果。
例如,Python有一個內置的Web服務器,可用於快速測試:
python3 -m http.server
然後瀏覽到http://0.0.0.0:8000/demo.html進行演示。
您還可以在此處查看不同靜態站點生成器的代碼示例。
對於高級用法選項,運行
tinysearch --help
請檢查在生產中託管WebAssembly所需的內容 - 您需要明確設置GZIP MIME類型。
如果您沒有完整的生鏽設置,也可以使用我們的夜間碼頭圖像。
這是如何快速嘗試使用Docker的Tinysearch:
# Download a sample blog index from endler.dev
curl -O https://raw.githubusercontent.com/tinysearch/tinysearch/master/fixtures/index.json
# Create the WASM output
docker run -v $PWD :/app tinysearch/cli --engine-version path= " /engine " --path /app/wasm_output /app/index.json默認情況下,使用了最新穩定的高山鏽跡圖像。每晚跑步
docker build --build-arg RUST_IMAGE=rustlang/rust:nightly-alpine -t tinysearch/cli:nightly .WASM_REPO :覆蓋wasm-pack存儲庫WASM_BRANCH :覆蓋要使用的存儲庫分支TINY_REPO :tinysearch的覆蓋存儲庫TINY_BRANCH :覆蓋Tinysearch分支機構為了將TinySearch集成到連續部署管道中,可以使用GitHub操作。
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm 以下網站使用Tinysearch:
您也在使用Tinysearch嗎?在這裡添加您的網站!
Tinysearch均在任何一個下獲得許可
可以選擇。