Вы можете сделать что-то подобное при индексации:
SELECT user_id + 10 * 1 AS id, 1 AS segment_id, itme_id, info FROM user_data_1
... добавление segment_id
. У вас их будет восемь, поэтому запрос на индексирование будет выглядеть примерно так:
SELECT (user_id + 10) * 1 AS id, 1 AS segment_id, itme_id, info FROM user_data_1
UNION
SELECT (user_id + 10) * 2 AS id, 2 AS segment_id, itme_id, info FROM user_data_2
UNION
SELECT (user_id + 10) * 3 AS id, 3 AS segment_id, itme_id, info FROM user_data_3
UNION
SELECT (user_id + 10) * 4 AS id, 4 AS segment_id, itme_id, info FROM user_data_4
UNION
SELECT (user_id + 10) * 5 AS id, 5 AS segment_id, itme_id, info FROM user_data_5
UNION
SELECT (user_id + 10) * 6 AS id, 6 AS segment_id, itme_id, info FROM user_data_6
UNION
SELECT (user_id + 10) * 7 AS id, 7 AS segment_id, itme_id, info FROM user_data_7
UNION
SELECT (user_id + 10) * 8 AS id, 8 AS segment_id, itme_id, info FROM user_data_8
Затем, когда вы запросите sphinx и получите обратно идентификаторы, просто отмените арифметику, разделив id
на segment_id
и вычтя 10
. Таким образом, все идентификаторы будут уникальными в сфинксе. Просто убедитесь, что тип атрибута может соответствовать размеру идентификаторов, которые вы будете индексировать.