26

一部の Web アプリケーションには (mysql の代わりに) mongodb を使用することにしましたが、mongodb に格納されているすべてのデータのインデックス作成/検索には sphinx を使用したいと考えています。mongodb object-id はデフォルトではハッシュであるため、これを維持したいと考えていますが、sphinx の使用には 1 つの問題があります。スフィンクスのドキュメントにあるように:

すべてのドキュメント ID は、一意の符号なしのゼロ以外の整数 (ビルド時間の設定に応じて 32 ビットまたは 64 ビット) でなければなりません。

それで...この問題を解決する最良の方法は何ですか...どのようにmongodb object-idをゼロ以外の整数に(そして元に)マッピングできますか?

アップデート

ケーシーの答えは正しい方向ですが、現在の開発バージョンでは文字列属性がSQLデータソースでのみ利用可能であることが判明しました。xmlpipe の場合、チェックアウト ソースにパッチを適用する必要があります。詳細については、sphinx フォーラムを参照してください。

4

1 に答える 1

28

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

代わりに、Sphinxが処理するXMLを生成するときに一意のIDをインクリメントし(xmlpipeを使用してMongoデータをSphinxに取り込むと想定していますか?)、MongoDBオブジェクトIDを文字列属性としてSphinxに格納できます。

これを行うには、最新の開発バージョンのSphinxが必要です。詳細については、この質問に対する私の回答を参照してください。auto_incrementIDを使用しないSphinx

于 2009-11-05T15:38:59.310 に答える