Tinysearchは、軽量で高速のフルテキスト検索エンジンです。静的なWebサイト向けに設計されています。
TinysearchはRustで記述され、WebAssemblyにコンパイルされてブラウザで実行されます。
Jekyll、Hugo、Zola、Cobalt、Pelicanなどの静的サイトジェネレーターと一緒に使用できます。

約40の投稿を含む私のブログのテストインデックスファイルは、99kb(49kb Gzipt、40kb Brotli)のWASMペイロードを作成します。
これは、上のデモ画像よりも小さいです。そうです。
Tinysearchは、「Bloom Filtersを使用してフルテキスト検索エンジンを書く」という記事のPythonコードのRust/Wasmポートです。 Lunr.JSおよびElasticLunrの代替品と見なすことができます。これは、小規模なWebサイトには重すぎて多くのJavaScriptをロードします。
フードの下では、XORフィルターを使用します。これは、BloomやCuckooフィルターよりも小さいSETメンバーシップの高速近似のためのデータストラクチャです。各ブログ投稿はフィルターに変換され、BINCODEを使用してバイナリブロブにシリアル化されます。基礎となるテクノロジーは変更される可能性があることに注意してください。
WASMパックは、WASMモジュールを構築するために必要です。一緒にインストールします
cargo install wasm-packJavaScript出力を最適化するには、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 Glueコードが作成され、Webサイトに統合されます。任意のWebサーバーからdemo.htmlを開いて結果を確認できます。
たとえば、Pythonには組み込みのWebサーバーがあり、クイックテストに使用できます。
python3 -m http.server
次に、http://0.0.0.0:8000/demo.htmlを閲覧してデモを実行します。
また、ここで、さまざまな静的サイトジェネレーターのコード例をご覧ください。
高度な使用オプションについては、実行してください
tinysearch --help
本番環境でWebAssemblyをホストするために必要なものを確認してください - GZIP MIMEタイプを明示的に設定する必要があります。
完全な錆のセットアップがない場合は、毎晩構築されたDocker画像を使用することもできます。
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 Branchを上書きしますTinysearchを継続的な展開パイプラインに統合するために、GitHubアクションが利用可能です。
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm 次のWebサイトではTinysearchを使用しています。
Tinysearchも使用していますか?ここにサイトを追加してください!
Tinysearchは、いずれかの下でライセンスされています
あなたのオプションで。