0

ドキュメントがすべて同じ構造の xml ドキュメントに保存されている Web サイトがあります。

検索ユーザーが指定したキーワードに従って、関連性の高いドキュメントを選択できる検索エンジンが必要です。

情報を 2 回 (XML ドキュメント + mysql データベースに) 保存し、関連性検索のために mysql データベースにクエリを実行するよりも、XQuery を使用する方が (?) 良い考えだと思いました。

XQuery はこれに適していますか?また、それぞれ約 7kb の +1000 個のドキュメントでどの程度の速度が期待できますか?

お時間をいただきありがとうございます。

敬具

4

2 に答える 2

1

クエリを指定して検索されているドキュメントが+1000ある場合、jQueryやSQLデータベースを使用するのは効率的ではありません。

1)キーワードごとに各ドキュメントを順番に検索すると、ドキュメント数*各ドキュメント内の単語数*キーワード数以上になります。

2)検索を行うたびに、すべてのドキュメントを再度スキャンする必要があります。何度も検索するプロジェクトがある場合、これは実行可能ではありません。

3)順次検索では、見つかった単語の数とドキュメント内の単語の総数、重要度や各単語などに基づいて結果をランク付けする方法はありません。

より良い代替策は、転置インデックスデータ構造を使用して、事前にドキュメントと単語に「インデックスを付ける」ことです。

このように、各ドキュメントの各単語にインデックスを付けるために事前にいくつかの作業を行いますが、実際の検索を行うときに多くの時間を節約できます(これが重要です)。

もう1つの利点は、アドホックではない方法でドキュメントをランク付けできることです。ベクトル空間モデルを参照してください。

于 2010-04-15T12:59:54.550 に答える
0

XML ドキュメントの検索ソリューション (複雑なドキュメント トランザクションではなく検索のみ) が必要な場合は、Apache - Lucene 検索エンジンをお勧めします。

最新の Apache Lucene 3.x バージョンには、降下検索機能が搭載されています。

さらに、検索エンジンとして lucene を使用している Apache-Solr を使用できます。これには、すべての管理機能、ファセット ブラウジング、およびペイロードがあります。(注: Lucene の実装は、すべての .NET、Java、Python、Ruby 言語でも利用できます)。

真の XQuery ベースのソリューションとオープンソースの性質が必要な場合は、ドキュメントの量を考慮して、eXist Xml Database を試してください。すべての Xml ドキュメントを eXists データベースにロードしてから、XQuery を使用します。しかし、このアプローチには-

  1. すべての Xml ドキュメントを eXists データベースに取り込みます
  2. これらのドキュメントを Xml 結果セットにクエリする XQuery モジュールを作成する
  3. アプリからこれらの XQuery モジュールに直接話しかけて、結果を取得します。
于 2010-04-17T23:28:20.270 に答える