mongodb をデータソースとしてスフィンクス検索を使用する

StackOverflow https://stackoverflow.com/questions/1680633

  •  16-09-2019
  •  | 
  •  

質問

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

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

それで ...この問題を解決する最善の方法は何ですか...mongodb object-id をゼロ以外の整数にマップするにはどうすればよいでしょうか (またその逆も可能です)。

アップデート

casey の答えは調べるべき正しい方向ですが、文字列属性は現在の開発バージョンでは SQL データソースでのみ使用できることが判明しました。xmlpipe の場合は、チェックアウト ソースにパッチを適用する必要があります。これについての詳細は、 スフィンクスのフォーラム.

役に立ちましたか?

解決

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top