3

以前に同様の質問を投稿しましたが、要件を明確に説明したとは思いません。基本的に、私は一連のHTMLファイルを書き出す.NETアプリケーションを持っています...さらに、このアプリケーションに、HTMLファイルのjavascriptコードがインデックスをクエリできるように(ベースのWebブラウザでファイルをオフラインで表示しているユーザーが入力した検索用語について)。

アイデアは、これらすべてを作成してから、サムドライブやCD-ROMなどにコピーして、Webブラウザーはあるが、必ずしもインターネットアクセスがないデバイスで表示できるように配布することです。

概念実証のためにApacheSolrを使用しましたが、Webサーバーを実行する必要があります。

実行可能なソリューションに最も近いのは、Lushを使用するJSSindex(jssindex.sourceforge.net)ですが、ユーザーの環境はWindowsであり、Cygwinのインストールをユーザーに要求したくありません。

4

3 に答える 3

2

主な問題は、ローカル HTML からインデックスにアクセスできるようにすることです。ずるい方法: JS ファイルにインデックスを入れて、HTML ページから参照します。

var index=[ {word:"home", files:["f.html", "bb.html"]},....];
于 2012-05-11T22:51:32.930 に答える
1

はしごは、その場でのインデックス作成を提供するため、解決策になる可能性があります。しかし、1,000 個以上のファイルがある場合、どれだけうまくスケーリングできるかわかりません... 残念ながら、JS がここでの答えであるかどうかはわかりません。フロントエンド (HTML 表示) とバックエンド (テキスト検索とインデックス作成) の両方として機能するカスタム (コンパイル済み) アプリを選びます。

于 2012-05-21T18:45:17.363 に答える
0

トライを使用してください- それらはとてつもなくコンパクトで非常にスケーラブルです - テキストマッチングには非常に便利です。

パフォーマンスと設計戦略をカバーする素晴らしい記事があります。ディクショナリよりも起動が遅くなりますが、特に大規模なデータセットを操作している場合は、使用するスペースが大幅に少なくなります。

次のように対処します。

  1. .net コードで、重要なすべてのキーワードのインデックスを作成します (ドキュメントとオフセットを追跡します)。
  2. アルファソートされたキーワードのリストを使用してトライ構造を生成し、
  3. ターミナル ノードを、それらが表す単語が含まれるドキュメントに関する情報で装飾します。

      C
     A
    R  T [{docid,[hit offsets]},...]
    

オフセットを保存する必要はありませんが、近接または順序で単語を検索できます。

.net 担当者は、trieサンプル コードを作成できます。

マップの生成にはしばらく時間がかかりますが、マップが生成されて JSON にシリアル化されると、JavaScript アプリケーションはそれを処理します。

于 2012-05-21T23:51:11.960 に答える