Unique keys for Sphinx along three vectors instead of two
- by Brendon Muir
I'm trying to implement thinking-sphinx across multiple 'sites' hosted under a single rails application. I'm working with the developer of thinking-sphinx to sort through the finer details and am making good progress, but I need help with a maths problem:
Usually the formula for making a unique ID in a thinking-sphinx search index is to take the id, multiply it by the total number of models that are searchable, and add the number of the currently indexed model:
id * total_models + current_model
This works well, but now I also through an entity_id into the mix, so there are three vextors for making this ID unique. Could someone help me figure out the equation to gaurantee that the id's will never collide using these three variables:
id, total_models, total_entities
The entity ID is an integer.
I thought of:
id * (total_models + total_entities) + (current_model + current_entity)
but that results in collisions.
Any help would be greatly appreciated :)