0

単一のレール アプリケーションでホストされている複数の「サイト」にまたがって思考スフィンクスを実装しようとしています。私は、thinking-sphinx の開発者と協力して詳細を整理しており、順調に進んでいますが、数学の問題については助けが必要です。

通常、思考スフィンクス検索インデックスで一意の ID を作成するための式は、ID を取得し、検索可能なモデルの総数を掛けて、現在インデックスが作成されているモデルの数を加算することです。

id * total_models + current_model

これはうまく機能しますが、entity_id をミックスに使用するようになったので、この ID を一意にするための 3 つの vextor があります。これらの 3 つの変数を使用して ID が決して衝突しないことを保証するための方程式を理解するのを誰かが手伝ってくれませんか:

id, total_models, total_entities

エンティティ ID は整数です。

私は考えました:

id * (total_models + total_entities) + (current_model + current_entity)

しかし、それは衝突を引き起こします。

どんな助けでも大歓迎です:)

4

1 に答える 1

0

このタンブルウィードを片付けようと思った。ヒントになるようなコメントがありましたが、私がやったことはビットシフトでした。持つことができるエンティティの量には制限がありますが、私の例では 1024 (私が思うに) であり、これで十分です。

((primary_key * total_models + current_model_offset) << 10) + entity_id

基本的に、通常の番号を取得し、それを左 (または右) にシフトして、開いたばかりの空の範囲に entity_id を追加します。

于 2010-04-14T04:39:51.233 に答える