ファイルあたり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. 何千ものファイルをテキストから効率的にリアルタイムで検索する方法
- 3. linuxのxmlファイル内で検索する
- 4. Ext.form.NumberFieldの何千ものセパレータ
- 5. 何千ものTCPソケットをポーリングする
- 6. 何千もの画像をキャッシュする
- 7. Amazon S3ファイルの何千ものファイルのメタデータを一括更新するには?
- 8. 何千人ものユーザーの画像アップロード
- 9. Googleマップ - 何千ものマーカー - JSON
- 10. 何千ものon()イベントリスナーを持つFirebase
- 11. iOSで何千もの注釈を管理する
- 12. FB.XFBML.parseループで何千ものJavaScriptエラーが発生する
- 13. Twitterの検索からAS3エラーxmlファイル
- 14. AND検索とOR検索の最も優れたメタファーは何ですか?
- 15. mod-rewriteで何千ものURLを作成しています
- 16. Googleは何千ものリンクを同じページでクロールします。
- 17. Rails Paperclip S3は何千ものファイルの名前を変更しますか?
- 18. 何千もの要素を持つSubversionリポジトリを整理する
- 19. .NETデータテーブルからSybaseに何千ものレコードを挿入する
- 20. Pythonとsqlite3 - 何千もの行を追加する
- 21. 何千ものカラムをDataGridviewに追加する
- 22. (Android)sqliteに何千もの行を挿入する
- 23. Google Maps JS API;何千もの点をプロットする
- 24. 文書検索(PDF、XML、HTML、MS Word)の検索を実装する最良の方法は何ですか?
- 25. Javaで検索するファイル
- 26. 何千ものif文を避ける最良の方法は?
- 27. HTML/Javascriptで何千ものリスト要素を扱う
- 28. マップビューで何千もの注釈をロードする方法を管理する
- 29. 何千ものスプライトを異なる透明度で描画するには?
- 30. 最も最近のファイルの文字列を検索するバッチファイル
データをデータベースに移動する可能性はありますか?そうでない場合は、クエリの高速化に役立つインデックスを作成できますか? –
検索する必要がある新しいファイルを追加していますか?検索の理由は何ですか(ちょうど高レベル...常に顧客情報などを抽出する必要があります)。評価に役立つかもしれません。前述したように、Lucene、Loading to DBなどは助けになるかもしれませんが、あなたの望む結果に合わないかもしれません。 – scarpacci