0

3,700万件のレコードを含むインデックスを作成しようとしています。

スクリプトを使用してMySQLからデータをエクスポートし、これをXMLとして出力してから、xmlpipe2でインポートしています。

私が抱えている問題は、生成されるXMLファイルがかなり大きく、開発中のサーバーにXMLを格納するためのメモリがないことです。

インポートする行の量を制限すると(たとえば、LIMIT 0、1000000)、次にLIMIT 1000000、1000000を実行すると、インデックスはそのように「マージ」されませんが、上書きされます。

どういうわけかこれをずらして、最終的にすべてのデータのインデックスを作成することはできますか?

ありがとう

4

2 に答える 2

0

複数のxmlファイルや複数のmysqlソースなど、インデックスごとに複数のソースを持つことができます。インデックスは、指定された順序でそれらを取得します。ドキュメントIDがソース全体で一意であることを確認してください。

于 2013-03-05T06:17:46.037 に答える
0

実際のXMLファイルに出力するのではなく、出力を直接sphinxにパイプします。そうすれば、実際のファイルが(メモリ内またはファイルシステム上に)存在する必要はありません。

つまり、「xmlpipe_command」で呼び出すスクリプトは、XMLを直接STDOUTに出力するだけです。スフィンクスはそれが進むにつれて消化してそれを読みます。

私はこのようにサーバーのメモリよりも何倍も大きいXMLデータソースを読んだことがあります。

于 2013-03-05T13:06:08.787 に答える