web-dev-qa-db-ja.com

純粋なJavaScriptとHTML5を使用してクライアント側の全文検索エンジンを作成するにはどうすればよいですか?

CDROMなどのオフラインストレージにオフラインhtmlアプリケーションのクライアント側検索エンジンを作成する必要があります。私はすでにWin32で作成しており、カタログファイルは2GB(MDBファイル)に近いです。

私のオフラインWebアプリケーションはCEF(Chromium Embedded Framework)とPhoneGAPを使用しているため、ブラウザーのWebセキュリティを無効にできます。 IndexedDBが役立つかもしれないと思いましたが、ストレージファイルを他のメディアにコピーする方法が見つかりませんでした。

  1. 私のカタログファイルは2GB近くになるので、すべてのレコードをメモリに読み取ることができません。
  2. 出力メディアをPhoneGAPとクロスプラットフォームにする必要があるため、最終検索にActiveXオブジェクトを使用できません。また、そのツールでWebセキュリティ制限を無効にすることもできます。
  3. どのWindowsアプリケーションでもカタログファイルとメディアを作成できます。カタログをクエリする出力ファイルは純粋なJavaScriptである必要があることに注意してください。

他のリムーバブルメディアにコピーできるオフラインHTMLアプリケーション検索カタログを作成するために利用できるHTML5ビッグストレージシステム(PhoneGAPでWebセキュリティを無効にできます)はありますか?

23

レイエスはこの正確な目的のために全文検索エンジンを実行しています: https://github.com/reyesr/fullproof

昨年9月のパリJSで、彼は背後にある概念のプレゼンテーションを行いました: http://kornr.net/prez/paris.js22/#/

それがあなたのニーズに答えることを願っています。

8
bobylito

その間、 lunr.js を考慮する必要があると思います。 Githubには3倍の星があります。

6
vanthome

データベース全体を.jsonファイルに保存することは間違いなく効率的ではありませんが、データベースをチャンクに分割し、オンデマンドでロードされる.jsonファイルとして保存することは問題なく機能する可能性があります-ただし、テストが必要です。

そして--MongoDBはデータベースを [〜#〜] bson [〜#〜] に格納します。データベースをこのファイル形式で保存し、アプリケーションからロードすることも考えられます(とにかく、データベース全体を小さな部分に分割することをお勧めします)。

//編集-データベースをファイルとして提供する場合、どのような種類のアクセス許可も設定できないと思います。ファイルを暗号化/難読化することもできますが、それがパフォーマンスやデータベースの内容にどのように影響するかはわかりません。

そして、はい、サーバーなしでBSONデータベースを読み取るスタンドアロンのhtml + jsアプリケーションを持つことは可能です。詳細を知りたい場合は、 このリンク を確認してください。これは以前にも聞いたことがありますが、純粋なJSでBSONファイルを処理することに関してはまったく経験がないため、これについてはお手伝いできません。私にできることは、そのようなことが存在することをあなたに知らせることだけでした:)

1
biphobe