このライブラリは、ブラウザーでフル機能の検索インデックスを有効にし、Runbox 7 でサーバーと対話せずに電子メールを検索するために使用されます。
これは、C で書かれたオープン ソースの検索エンジン ライブラリである Xapian に基づいています。Xapian を Emscripten コンパイラでコンパイルすることにより、最新のブラウザで動作する WebAssembly 用のこのライブラリを構築できます。
WebAssembly をターゲットにすることで、nodejs を使用してサーバー上で同じコードを使用することもできます。異なるオペレーティング システム用に個別のビルドを作成する必要はありません。また、JavaScript サンドボックス内で実行されるため、それに付属するセキュリティ機能の恩恵を受けることができます。これはネイティブ ビルドよりも安全で移植性が高く、パフォーマンスも大きく損なわれないと考えています。むしろ、WebAssembly に付属する Javascript ランタイムとの緊密な統合により、C ライブラリへの従来のスクリプト言語バインディングを使用する場合と比較して、開発の生産性が向上し、さらにはパフォーマンスが向上することがわかりました。
もちろん、ブラウザーに検索インデックスがあることは、Web 全体の検索エンジンでは機能しませんが、電子メール アカウントの場合、検索インデックスがブラウザーのローカル ストレージ エンジン (IndexedDB など) に収まるデータ量は限られています。使用時のメモリ。
検索インデックスをサーバーではなくブラウザーに持つことには、いくつかの利点があります。まず第一に、サーバーへのクエリと結果の往復がなくなるため、速度が向上します。入力するとすぐに完全な検索結果が返され、並べ替えやヒット数のカウントに関してより多くの機能を提供できます。これは、ユーザーにとって、結果がすぐに得られるため、クエリをより効率的に調整できることを意味します。もう 1 つの利点は、検索内容を監視するサーバーがないため、プライバシーが保護されることです。オフライン (インターネット接続なし) でもコンテンツを検索することもできます。ユーザーにコーディングのスキルさえあれば、検索インデックスとそれを操作するライブラリに完全にアクセスできるため、インデックスのカスタム処理の可能性が広がります。電子メールのシナリオでは、スマート検索から監視やアラートまで、あらゆるものが可能です。
それでも、searchindex をダウンロードしたくない場合や、検索にサーバーを使用したい場合があります。シナリオの 1 つは、自分のものではないデバイスを使用する場合です。 WebAssembly をターゲットにすると、サーバー上で同じコードを再利用して、ブラウザーと同じ API を提供できるようになります。
最新の Web アプリケーションでは、キャッシュ、設定、コンテンツなどの保存にブラウザーのローカル ストレージをますます利用しています。これにより、パフォーマンスが向上し、オフライン機能も提供されますが、使用するブラウザーとデバイスをより深く認識する必要もあります。自分のプライベート デバイスを使用しない場合は、そのデバイスに何も保存されないようにプライベート ブラウジングを使用する必要があります。また、プライベート デバイスの場合は、暗号化されたファイル システムを提供するオペレーティング システムの使用を検討する必要があります。
このプロジェクトは https://github.com/xapian/xapian に依存しており、ここに書かれているように Emscripten を使用してビルドしたものである必要があります。
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
Web アセンブリ バイナリをビルドするには、XAPIAN emscripten ビルドのxapian_core
フォルダーの場所にXAPIAN
環境変数を設定する必要があります。
その後、 XAPIAN=xapian_core_location npm run build
使用してビルドできます。
完全なビルドおよびテスト手順 (プッシュごとに実行されます) については、.travis.yml ファイルを参照することもできます。
npm run test