プロジェクトの更新: Stork での作業を終了します。 過去数年間 Stork を楽しんでいただいた皆様に感謝いたします。 |
静的サイト向けに作られた、信じられないほど高速な Web 検索。
Stork は、Web 上に美しく、高速かつ正確な全文検索インターフェイスを作成するためのライブラリです。
2 つの部分に分かれています。まず、これはコンテンツのインデックスを作成し、Web サーバーにアップロードできる検索インデックス ファイルを作成するコマンド ライン ツールです。 2 つ目は、そのインデックス ファイルを使用して、ユーザーが入力するとすぐに最適な検索結果を表示する対話型検索インターフェイスを構築する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 インスタンスには入力フックと結果リストが必要です。これら 2 つの要素はラッパーに配置する必要がありますが、ラッパーはオプションです。
入力フックにはdata-stork="federalist"
属性が必要です。ここで、 federalist
検索インスタンスを登録するときの名前です。 (このようにして、ページ上に複数の独立した検索ボックスを配置し、すべてが異なるインスタンスを指すようにすることができます。) federalist
である必要はありません。好きなものに変更できます。
結果リストは、属性data-stork="federalist-results"
を持つ空の<div>
タグである必要があります。繰り返しますが、ここで、 federalist
好きなものに変更できます。
上記の例のクラス ( stork-input
、 stork-output
) はテーマ用です。 Stork のほとんどのテーマは上記の形式を前提としています。別のものが必要かどうかは、テーマのドキュメントに記載されています。独自のテーマをデザインすることもできます。その際、スタイルとクラス名は自由に決定します。
stork.js
を含める必要があります。これは、Stork CDN からロードするか、自分でホストできます。これにより、Stork WebAssembly BLOB がロードされ、Stork オブジェクトが作成されます。これにより、インデックスの登録と構成が可能になります。
次に、少なくとも 1 つのインデックスを登録する必要があります。
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
構築した検索インデックスは、パブリック URL のある場所に保存する必要があります。登録するには
これにより、 http://files.stork-search.net/federalist.st
に保管されているインデックスがfederalist
という名前で登録されます。 HTML 内のdata-stork
属性がこの名前にフックされます。
最後に、検索バーがインデックスおよびページとどのように対話するかについて、いくつかの構成オプションを設定できます。
おそらく、フェデラリストの論文を検索できるインターフェイスを自分の Web サイトに追加したくないでしょう。検索バーを自分のものにする方法は次のとおりです。
インデックスを構築するには、コンピューター上に 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 "
Web サイトに Stork 検索インターフェイスを埋め込むには、まずインデックス ファイルを Web サーバーにアップロードし、次にその URL を Web ページの Javascript のstork.register()
関数に渡します。
プロジェクトの Web サイト (https://stork-search.net) でドキュメントを読み、カスタマイズについて詳しく学ぶことができます。
Stork を構築するには、次のものが必要です。
リポジトリは、いくつかの変更を加えた典型的な Cargo ワークスペースのように構造化されています。
stork-*
ディレクトリには Rust パッケージが保持されます。 stork-cli
とstork-wasm
はトップレベルのパッケージです。それ以外はすべて依存関係です。js
Javascript のソース コードが保持されます。test-assets
Stork の機能テストに必要なバイナリ アセットを保持します。local-dev
ローカル開発に使用されるテスト Web ページを構築して実行するために必要な構成ファイル、コーパス、およびインデックス ファイルが保持されます。Rust エントリーポイントまたは Javascript エントリーポイントを使用してプロジェクトをビルドできます (ビルド手順は以下にリストされています)。プロジェクトをビルドすると、さらに 3 つのディレクトリが表示されます。
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 を参照してください。