2012-05-11 12 views
3

以前に同様の質問を投稿しましたが、私の要件を非常にはっきりと説明したとは思いません。基本的には、私は、HTMLファイルの束を書き出す.NETアプリケーションを持っています...私はさらに、HTMLファイルのjavascriptコードがインデックスを照会できるようにフルテキスト検索のために、ファイルを閲覧しているユーザーが入力した検索語には、オフラインがあります)。オフラインHTMLドキュメントのJavascriptクエリ可能な索引付け

アイデアは、これをすべて作成して、サムブラウザまたはCD-ROMのようなものにコピーして、ウェブブラウザを備えたデバイスに表示するために配布することです。

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

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

+0

[ローカル/オフラインWebのフルテキスト検索 "site"](http://stackoverflow.com/questions/10356532/full-text-search-for-local-offline-web-site) – epascarello

+0

はい、それは私がこの質問で参考にした私の元々の質問です...私はとても新しいので、新しいものを掲示するのではなく、古いものをもう一度書き直すことができたと思いますか? – user1263226

+0

BTW JSSindexはまさにあなたが望むもののように見えます - "Lush ..エンドユーザーが検索クエリを実行するために必要としないもの」 –

答えて

2

主な問題は、ローカルHTMLからインデックスにアクセスできるようにすることです。それをやってみよう:JSファイルにインデックスを置き、HTMLページから参照する。

var index=[ {word:"home", files:["f.html", "bb.html"]},....]; 
+0

私のニーズに合わせてスケーラブルではないと思います各データセットにはおよそ1,000個のHTMLファイルと50MBのテキストコンテンツが含まれていますが、それは主な問題ではないと思います。答えをXMLファイルで既知の場所に置くことができますか? XSLを使用してそれを「照会」し、結果を提示するか、それともあなたの全体的なポイントが欠けていますか? – user1263226

+0

XMLも機能します... JavaScriptはオフラインHTMLよりも面白いかもしれません。また、インデックスファイルを分割することもできます...あなたが本当にあなた自身の上に構築したいと仮定します。 –

+0

さて、自分でインデックス作成ルーチンを作成することを避けたいと思っていましたが、選択肢がないかもしれません。 – user1263226

1

Laddersスポットインデクシングで提供されるように、解決策である可能性があります。しかし、1,000以上のファイルでは、スケールがどのくらいうまくいかないのか分かりません...悲しいことに、私はJSがここでの答えであるとは確信していません。私は、フロントエンド(HTML表示)とバックエンド(テキスト検索とインデックス作成)の両方を兼ね備えたカスタム(コンパイル済み)アプリを用意しています。

+0

はい、私はすでにそれを見ましたが、それは私のニーズに合わせて縮尺が変わることを疑う...私はカスタム(コンパイルされた)アプリケーションでインデックスを作成し、その効率を利用したい...しかし、検索自体(すなわち、インデックスのクエリ)はブラウザで行う必要があります。技術的な理由はありません。なぜなら、私は自分自身を一からすべてコード化すれば、私は車輪を再発明しているように感じるだけです。私はすべて、JavascriptのReSTリクエストでSolrインデックスを照会することができます。私のデモ/コンセプトの証明のためのサーバー... – user1263226

0

trieを使用してください。彼らは非常にコンパクトでスケーラビリティがあり、テキストマッチングのために便利です。

性能と設計戦略をカバーするgreat articleがあります。彼らは辞書よりも起動が遅くなりますが、特に大規模なデータセットを使って作業しているときには、より少ないスペースを占めます。

次のように私はそれに取り組むだろう:あなたの.NETコードのインデックスで

  1. あなたにとって重要であるすべてのキーワードを(自分の文書を追跡し、オフセット)。
  2. キーワードのリストをソートし、
  3. は、それらが表す単語がで見つけることができるドキュメントに関する情報を端末ノードを飾るアルファを使用してトライ構造を生成する。

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

あなたがドン」オフセットを保存する必要がありますが、近接または順序で単語を検索することができます。

あなたの.netみんなはトライsample codeを作ることができます。

マップを生成するのに時間がかかりますが、それが完了してJSONにシリアライズしたら、javascriptアプリケーションはそれを介して競合します。

+0

助けがあれば、私は一緒にいくつかのコードをスリングすることができますが、私はあなたの人がそれを処理することができると思う、叫び声をください。 –

+0

ええええええええええええええええええええええええええええええええええええええって、 Lucene/Lucene.NETのようなものをJSONにシリアル化する方法はありませんか?そうであれば、代わりにトライとして、より効率的なデータ構造にするのはなぜでしょうか? – user1263226

関連する問題