BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Stork、JAMStackのためのRust/Wasmベースの高速全文検索

Stork、JAMStackのためのRust/Wasmベースの高速全文検索

原文(投稿日:2020/03/31)へのリンク

Stripeの開発者であるJames Little氏は、Rust/WebAssemblyによる全文検索アプリケーションのStork (ベータ版) をリリースした。Storkは静的サイトとJAMStackサイトを対象としている。また、サイトのユーザに優れた検索速度を提供するよう努めている。

Storkを使用する開発者は、2つのステップで操作する。まず、検索するコンテンツにStorkでインデックスを付け、生成されたインデックスをURLにアップロードする必要がある。次に、エンドユーザの検索インターフェイスは、Storkが提供する検索機能とリンクする必要がある。検索インターフェースは通常、入力フィールドの形式を取り、入力に応じた検索機能を備え、検索結果は入力フィールドの下に表示される。

検索インデックスを生成するには、開発者は最初にStorkをインストールする必要がある。Macの場合、Storkはbrewインストールできるが、Windowsの開発者は、RustのCargoを使用してソースからインストールする必要がある。Storkがインストールされている場合、次のステップは、インデックスを作成するコマンドを実行する:

stork --build federalist.toml

TOML構成ファイルは、インデックスを作成するファイルのリストと、生成されたインデックスの名前をホストする。ファイルリストアイテムには、ローカルマシン上のファイルの場所、エンドユーザをナビゲートするファイルのURL、および検索インターフェイスによってエンドユーザに表示されるファイルのタイトルの両方が含まれている必要がある:

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-6.txt", url = "/federalist-6/", title = "Concerning Dangers from Dissensions Between the States"},
(...)
    {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"},
(...)

[output]
filename = "federalist.st"

生成されたインデックス (ここではfederalist.st) は、たとえばCDNの場所にアップロードして、その後のダウンロードを高速化できる。Storkの対象となるユースケースである静的サイトのコンテキストでは、インデックスの生成とアップロードを自動化できるため、インデックスはサイトのコンテンツで最新の状態に保たれる。

フロントエンド側では、開発者は検索結果の外観をパーソナライズするために、CSSとともにStorkスクリプトをエントリHTMLに含める必要がある。HTMLには通常、検索入力 (<input />タグ) が含まれ、検索結果が固定される出力要素が含まれている必要がある:

<html lang="en">
  <head>
    (...)
    <link rel="stylesheet" href="https://files.stork-search.net/basic.css" />
  </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',
        'https://files.stork-search.net/federalist.st'
      )
    </script>
  </body>
</html>

前の例では、いくつかの基本的なCSSがヘッダに追加されており、StorkのスクリプトはBodyの末尾の前にあります。Storkインスタンスは、インデックスファイルをDOM入力フィールド (DOM上の入力および出力のdata-stork属性にリンクするfederalist文字列識別子) にリンクするパラメータを使用して作成される。

前述の例は、次のインタラクティブな全文検索を生成するのに十分である:

demo full-text search on the federalist corpus

より洗練された検索機能 (FlexSearchなど) で利用できる他のオープンソースの全文検索ユーティリティがあるが、Storkは、それが専門とするユースケースによって差別化されており、既存のJAMStackサイトに高速な検索機能を簡単に追加できる。

Storkはベータプロジェクトである。その設計目標と最初のメジャーバージョンに向けたロードマップは、インデックスサイズを縮小し、WebAssemblyバンドルサイズを小さく保ち、開発者の人間工学と検索速度を高く保ちながら、インデックスを作成できるコンテンツの種類を拡張することである。

Storkは、Apache 2.0オープンソースライセンスの下で利用できる。バグと機能は、プロジェクトのGithub Issuesページにリストされている。機能のリクエストは大歓迎で、GitHubプロジェクトを介して提供されるだろう。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT