專案更新:我正在結束與 Stork 的合作。 感謝過去幾年所有喜歡使用 Stork 的人! |
專為靜態網站打造的超快速網路搜尋。
Stork 是一個用於在網路上創建美觀、快速且準確的全文搜尋介面的程式庫。
它分為兩部分。首先,它是一個命令列工具,可以對內容進行索引並建立一個可以上傳到 Web 伺服器的搜尋索引檔案。其次,它是一個Javascript 庫,它使用該索引檔案建立互動式搜尋介面,在使用者鍵入時立即向使用者顯示最佳搜尋結果。
Stork 是用 Rust 建構的,Javascript 函式庫在幕後使用 WebAssembly。它很容易上手,而且更容易定制,因此它可以滿足您的需求。它非常適合 Jamstack 網站和個人博客,但可以在任何需要互動式搜尋欄的地方使用。
目前由 James Little 開發
讓我們在網路上放置一個搜尋框,在聯邦黨人文集的文本中進行搜尋。
請造訪 https://stork-search.net 查看此示範。
<!DOCTYPE html >
< html lang =" en " >
< head >
< title > Federalist Search </ title >
</ head >
< body >
< div class =" stork-wrapper " >
< input data-stork =" federalist " class =" stork-input " />
< div data-stork =" federalist-output " class =" stork-output " > </ div >
</ div >
< script src =" https://files.stork-search.net/stork.js " > </ script >
< script >
stork . register (
"federalist" ,
"http://files.stork-search.net/federalist.st"
) ;
</ script >
</ body >
</ html >
Stork 掛鉤到您頁面上包含的現有 HTML。每個 Stork 實例都必須有一個輸入鉤子和一個結果清單;這兩個元素應該放置在包裝器中,儘管包裝器是可選的。
輸入掛鉤應具有data-stork="federalist"
屬性,其中federalist
是您註冊該搜尋實例的名稱。 (這樣,您可以在一個頁面上擁有多個獨立的搜尋框,所有搜尋框都指向不同的實例。)它不必是federalist
- 您可以將其更改為您想要的任何內容。
結果清單應該是一個空的<div>
標籤,其屬性data-stork="federalist-results"
。同樣,在這裡,您可以將federalist
更改為您想要的任何內容。
上面範例中的類別( stork-input
、 stork-output
)是針對主題的。大多數 Stork 主題均採用上述格式;主題文檔會告訴您是否需要不同的東西。您也可以設計自己的主題,此時樣式和類別名稱由您決定。
您需要包含stork.js
,您可以從 Stork CDN 載入它或自行託管。這將載入 Stork WebAssembly blob 並建立 Stork 對象,該對象將允許註冊和配置索引。
然後,您應該註冊至少一個索引:
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
您建立的搜尋索引需要儲存在具有公共 URL 的位置。註冊
這會將儲存在http://files.stork-search.net/federalist.st
中的索引註冊為federalist
名稱; HTML 中的data-stork
屬性將會掛接到該名稱中。
最後,您可以設定一些設定選項來設定搜尋列如何與索引和頁面互動。
您可能不想在自己的網站上新增一個可讓您搜尋聯邦黨人文集的介面。以下是如何讓您的搜尋欄成為您自己的。
要建立索引,您需要在電腦上安裝 Stork 可執行文件,您可以在最新的 Github 版本上安裝該可執行文件,或者如果您安裝了 Rust 工具鏈,也可以透過執行cargo install stork-search --locked
來安裝。
搜尋索引基於文件結構:您為 Stork 提供磁碟上的文件清單並包含有關這些文件的一些元數據,Stork 將根據這些文件的內容建立其搜尋索引。
首先,您需要一個設定檔來描述該檔案清單等內容:
[ input ]
base_directory = " test/federalist "
files = [
{ path = " federalist-1.txt " , url = " /federalist-1/ " , title = " Introduction " },
{ path = " federalist-2.txt " , url = " /federalist-2/ " , title = " Concerning Dangers from Foreign Force and Influence " },
{ path = " federalist-3.txt " , url = " /federalist-3/ " , title = " Concerning Dangers from Foreign Force and Influence 2 " },
{ path = " federalist-4.txt " , url = " /federalist-4/ " , title = " Concerning Dangers from Foreign Force and Influence 3 " },
{ path = " federalist-5.txt " , url = " /federalist-5/ " , title = " Concerning Dangers from Foreign Force and Influence 4 " },
{ path = " federalist-6.txt " , url = " /federalist-6/ " , title = " Concerning Dangers from Dissensions Between the States " },
{ path = " federalist-7.txt " , url = " /federalist-7/ " , title = " Concerning Dangers from Dissensions Between the States 2 " },
{ path = " federalist-8.txt " , url = " /federalist-8/ " , title = " The Consequences of Hostilities Between the States " },
{ path = " federalist-9.txt " , url = " /federalist-9/ " , title = " The Union as a Safeguard Against Domestic Faction and Insurrection " },
{ path = " federalist-10.txt " , url = " /federalist-10/ " , title = " The Union as a Safeguard Against Domestic Faction and Insurrection 2 " }
]
此 TOML 檔案描述所有文件的基本目錄,然後列出每個文件以及可找到該文件的 Web URL 以及該文件的標題。
從那裡,您可以透過執行以下命令來建立搜尋索引:
$ stork build --input federalist.toml --output federalist.st
這將在federalist.st
處建立一個新檔案。您可以使用相同的命令列工具搜尋它:
$ stork search --index federalist.st --query " liberty "
要在您的網站上嵌入 Stork 搜尋介面,請先將索引檔案上傳到您的 Web 伺服器,然後將其 URL 傳遞給網頁 Javascript 中的stork.register()
函數。
您可以在專案網站上閱讀更多文件並了解更多有關客製化的資訊:https://stork-search.net。
要建置 Stork,您需要:
此儲存庫的結構類似於典型的 Cargo 工作區,但有一些修改。
stork-*
目錄包含 Rust 套件。 stork-cli
和stork-wasm
是頂級軟體包;其他一切都是依賴。js
包含 Javascript 原始碼。test-assets
保存 Stork 功能測試所需的二進位資產。local-dev
保存建置和執行用於本機開發的測試網頁所需的設定檔、語料庫和索引檔。您可以使用 Rust 入口點或 Javascript 入口點建立專案(下面列出了建置說明)。建置專案後,您將看到另外三個目錄:
target
保存輸出二進制建置工件pkg
保存中間 WASM 建置工件dist
保存著 Web 的最終建置工件。如果您有興趣提取最終的 Stork 建置工件,可以在使用yarn build
建置專案後提取下列檔案:
/target/release/stork
/dist/stork.js
/dist/stork.wasm
just build-indexer
將構建索引器二進位到target/release/stork
just build-js
將建立 WASM 二進位和 Javascript 橋接程式碼到dist
目錄just build-federalist-index
將建立在整個專案中引用的 Federalist.st 索引檔。它將輸出到local-dev/test-indexes/federalist.st
。just build-indexer-dev
將建立索引器二進位文件cargo run -- <CLI OPTIONS>
將運行索引器二進位文件just build-dev-site
將建立 WASM 和 Javascript 橋接程式碼,建立 Federalist.st 索引,並打包開發站點./scripts/serve.sh
將為開發網站提供服務查看專案的 Justfile 以取得更多可用腳本。