Разбира се - това е лесно за заобикаляне. Ако трябва да създадете свои собствени идентификатори само за Sphinx и не искате те да се сблъскват, можете да направите нещо подобно във вашия sphinx.conf (примерен код за MySQL)
source products {
# Use a variable to store a throwaway ID value
sql_query_pre = SELECT @id := 0
# Keep incrementing the throwaway ID.
# "code" is present twice because Sphinx does not full-text index attributes
sql_query = SELECT @id := @id + 1, code AS code_attr, code, description FROM products
# Return the code so that your app will know which records were matched
# this will only work in Sphinx 0.9.10 and higher!
sql_attr_string = code_attr
}
Единственият проблем е, че все още се нуждаете от начин да разберете кои записи са били съпоставени от вашето търсене. Sphinx ще върне идентификатора (което вече е безсмислено) плюс всички колони, които маркирате като „атрибути“.
Sphinx 0.9.10 и по-нова версия ще може да ви върне кода на продукта ви като част от резултатите от търсенето, тъй като поддържа атрибути на низ.
0.9.10 все още не е официално издание, но изглежда страхотно. Изглежда, че Zawodny го преглежда в списъка на Крейг така че няма да съм много нервен да разчитам на тази функция.