2009-11-05 11 views
26

mongodbをmysqlの代わりに使用することにしましたが、mongodbに格納されているすべてのデータをインデックス化/検索するためにsphinxに滞在します。 mongodb object-idはデフォルトごとのハッシュであるため、このままにしておきたい - 今では、スフィンクスを使用する際に1つの問題があります。それはスフィンクスのドキュメントで言うように:データソースとしてmongodbを使用したスフィンクス検索

ALL文書IDSは、(ビルド時の設定に応じて32ビットまたは64ビット)UNIQUE UNSIGNED NON-ZERO整数 でなければなりません。

この問題を解決するにはどうすればよいのですか... mongodb object-idを非ゼロの整数(とバック)にマップするにはどうすればよいですか?

UPDATE

ケイシーの答えは、それが文字列属性は、現在のDEV-バージョンのSQLデータソースのためにのみ利用可能です判明ただしで、に見て右方向です。 xmlpipeでは、チェックアウトソースにパッチを適用する必要があります。これに関する詳細はsphinx forumにあります。

答えて

28

オブジェクトIDをSphinxドキュメントIDとして使用することはできません - MongoDBオブジェクトIDはSphinxのドキュメントIDの最大サイズよりも大きいです。

代わりに、Sphinxが処理しようとしているXMLを生成する際に一意のIDをインクリメントすることができます(xngpipeを使ってMongoデータをSphinxに取得すると仮定していますか?)MongoDBオブジェクトIDを文字列属性スフィンクスで

これを行うには、スフィンクスの最新開発版が必要になります - 少し詳細については、この質問に対する私の答えを参照してください。Sphinx without using an auto_increment id

+0

おかげで非常に多くの...私は必要な正確に何のようです!一般的に私は開発版の実行に問題はありません。私は明日試して、すべてが期待通りに動くならば、「答えた」と設定します。再度、感謝します! – aurora

関連する問題