ファイルあたり50KBのサイズのXMLファイルが約50000個あります。これらのファイルでデータを検索したいのですが、これまでの私の解決策は非常に遅いです。検索のパフォーマンスを向上させる方法はありますか?何千ものXMLファイルで検索する
答えて
ファイルの内容をデータベースに常に索引付けし、そこで検索を実行できます。データベースは検索の面でかなり優れています。
軽量で高速のフラットファイル検索インデックスエンジンLucene.NETを使用できます。
開始チュートリアルについては、http://codeclimber.net.nz/archive/2009/09/02/lucene.net-your-first-application.aspxを参照してください。
Luceneはこのようなもののために作られました。人々は常にデータベースに頼っていますが、フルテキストインデックスはほぼ確実に質問者が本当に必要としています。 – Chris
それはむしろ彼らが何を探しているかによって異なります。テキスト内の単語を検索している場合、Luceneは問題ありません。あなたがウルグアイのトマトの平均価格を知りたければ、フリーテキストシステムはあなたに言いません。 –
多くの場合、これらのXMLファイルの性質によって異なります。再生成されない50,000のXMLファイルですか?または彼らは絶えず変化していますか? XMLファイル内に、検索のためにインデックスを付ける特定の要素だけがありますか?
確かに50KBのファイルハンドルを開いて内容を読み、テキストを検索するのは非常に遅くなります。私はPavelに同意します。データをデータベースに格納すると多くのパフォーマンスが得られますが、XMLファイルが頻繁に変更される場合は、データベースとの同期を維持するための方法が必要です。
独自のソリューションを展開する場合は、すべてのファイルをスキャンして単語インデックスを作成することをお勧めします。ファイルが頻繁に変更された場合は、「最終変更日」を記録しておき、ファイルが最近変更された場合は、インデックスを更新してください。このようにして、ginormous wordインデックスが1つだけ作成され、 "foo"の検索が行われている場合は、ファイル39209.xml、file57209、およびfile01009.xmlにその単語が含まれていることがわかります。 XMLの性質に応じて、要素をインデックスファイルに格納することもできます(基本的に、すべてのXMLファイルを1つにまとめるようになります)。
私はあなたがWindowsを使用していると仮定しており、Windowsデスクトップ検索を使用してファイルをすばやく検索することができます。ファイルが変更されたときに更新されるWindowsインデックスを使用します。 .NETから使用できるSDK is available here
Splunkインスタンスをスピンアップしてファイルにインデックスを付けることができます。これは主にログパーサーとして課金されますが、依然としてお客様のニーズに対応します。ファイルを単語にトークン化し、それらの単語を索引付けし、複雑な検索基準をサポートするWebベースの検索ツールとCLIベースの検索ツールの両方を提供します。
ありがとう、あなたの返信のために、実際にはxmlファイルはデータベースに変換することはできませんが、私は1つのテーブル内のすべてのユニークな単語をインデックスし、それらをファイルIDにリンクします。本当に事前に感謝します。 –
XMLデータベースを使用します。通常の推奨事項はオープンソース、MarkLogicを商用したい場合はeXistですが、マイクロソフトにとって重要なことであり、XML機能の究極を望んでいない場合はSQL Serverを使用できます。そして、あなたがそれらを評価したいなら、他にもたくさんのものがあります。すべてのデータベース製品は学習曲線が急峻ですが、これらのデータボリュームでは適切なソリューションです。
- 1. 何千もの小さなファイルにXMLデータを保存する
- 2. Javascript - 何千もの単語の千のテキストを検索する最も効率的な方法ですか?
- 3. 何千ものファイルをテキストから効率的にリアルタイムで検索する方法
- 4. OSX上の何千ものファイルのディレクトリ内でバイナリファイルの検索を高速に行うためのツール
- 5. 何千ものファイルを外部コマンドで多重処理する
- 6. linuxのxmlファイル内で検索する
- 7. Ext.form.NumberFieldの何千ものセパレータ
- 8. 何千もの.htaccessリダイレクト301
- 9. 何千もの画像をキャッシュする
- 10. 何千ものTCPソケットをポーリングする
- 11. Pythonを使用して何千ものファイルをダウンロードする
- 12. は、私は何もPythonのファイルを検索するには
- 13. Collectstaticは何千ものファイルを埋め込みますDjango
- 14. XMLファイル内でのマルチスレッド検索
- 15. Amazon S3ファイルの何千ものファイルのメタデータを一括更新するには?
- 16. 何千人ものユーザーの画像アップロード
- 17. 何千ものレコードのページ番号
- 18. 何千ものon()イベントリスナーを持つFirebase
- 19. Googleマップ - 何千ものマーカー - JSON
- 20. 何千もの無関係なgunicornワーカー
- 21. Visual Studio 2015:何千もの疑似ビルドエラー
- 22. XML - XMLファイル内の値を検索する
- 23. 何百ものファイルの何千もの行を解析する効率を向上させる方法
- 24. 1回のドローコールで何千ものプリミティブを描画する
- 25. OpenGL VBOで何千ものポリゴンを描画する
- 26. FB.XFBML.parseループで何千ものJavaScriptエラーが発生する
- 27. iOSで何千もの注釈を管理する
- 28. Twitterの検索からAS3エラーxmlファイル
- 29. XMLファイルの属性値を検索VB.net
- 30. xmlファイルからlistviewへの検索バー
データをデータベースに移動する可能性はありますか?そうでない場合は、クエリの高速化に役立つインデックスを作成できますか? –
検索する必要がある新しいファイルを追加していますか?検索の理由は何ですか(ちょうど高レベル...常に顧客情報などを抽出する必要があります)。評価に役立つかもしれません。前述したように、Lucene、Loading to DBなどは助けになるかもしれませんが、あなたの望む結果に合わないかもしれません。 – scarpacci