2011-05-25 13 views
0

私は約4000件のデータを含むXML文書を持っています。データはPHP環境で使用され、Webアプリケーションに必要です。私はデータの索引付けに "sphinx"(http://sphinxsearch.com/docs/2.0.1/xmlpipe2.html)を使用することを考えましたが、それ以外の、おそらくより良いオプションがあるのでしょうかと疑問に思っていました。事前にXML文書/ファイルの索引付けに最適な方法は?

おかげで、 アンディ

編集:私は、例えばにXMLファイルをロード輸入スクリプトを記述する必要はありません MySQL-DB。これは次のようなものでなければなりません:ファイルをこのツール/プログラム/にロードしてから、PHPから検索可能にする必要があります。

+0

明確にする:最終結果が検索可能なMySQLデータベースです)、カスタムビルドのインポートスクリプトを使用せずにXMLファイルを検索可能にする簡単な方法がほしいだけですか? – jisaacstone

+0

正確です。だから私はスフィンクスを使用しているようです:) – ndee

答えて

3

エントリが4000個あり、1つしかない場合は、エントリが見つかるまでファイル全体が読み込まれます。それは長い時間がかかることがあります。 MySQLのようなデータベースを使いたいかもしれません。


あなたは、あなたがこれら二つのオプションの1になってしまいますあなたのXMLファイルの検索ができるようにしたい場合は:あなたは アレイ、またはでき何かにファイル全体を解析

  1. すばやく(さえSLOとなります、ご希望の エントリを探し、全体のXML ファイルを反復処理
  2. ( PHPスクリプトを呼び出すたびにメモリを多く の原因になります)を検索しますwer then 番号が1つあるので、 を参照してください。 時間前にすべてを入力してください。 検索を続行できます)。

パフォーマンス上の理由から、どちらのオプションも本当に問題ありません。ユーザーがXMLファイルを編集することを望むのであれば、データベースなどのマルチスレッド保存ではないので、さらに難しくなります。

検索のパフォーマンスを向上させたい場合は、データベースを使用することをお勧めします。それは同じくらい簡単です。

さらに、ユーザがXMLファイルを(JavaScriptを使用して)解析し、希望の記事のid(あなたのサーバから開かれる)のようなものを取得させることになります。しかし、あなたのXMLファイルのサイズとユーザーのマシンの能力に応じて、ブラウザはスクリプトを中断してキャンセルするかもしれません。

+0

私は私の質問をより明確にするために、私が探しているものを編集します。私はインポートスクリプトを書いたくありません。エントリをDBに手動で読み込まなくても、 "検索可能"にする必要があります。 – ndee

+0

オリジナルの投稿も更新されました。 –

2

私は2番目にルーカス:それが好きかどうかは、あなたが何らかのパフォーマンスを期待している場合は、解析と正規化をエスケープしません。

xmlまたは解析されたxml(オブジェクトまたはjsonとして)をインポートして直接保持できるORM(SQLまたはNoSQL)を活用しましょう。 (Doctrineがそうすることができると確信しています。また、MongoDBとCoucheDBのNoSQLオプションについても調べてください)

関連する問題