Jasne - łatwo to obejść. Jeśli potrzebujesz stworzyć własne ID tylko dla Sphinxa i nie chcesz, żeby się kolidowały, możesz zrobić coś takiego w swoim sphinx.conf (przykładowy kod dla 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
}
Jedynym problemem jest to, że nadal potrzebujesz sposobu, aby dowiedzieć się, jakie rekordy zostały dopasowane przez twoje wyszukiwanie. Sphinx zwróci identyfikator (który jest teraz bez znaczenia) oraz wszelkie kolumny, które oznaczysz jako „atrybuty”.
Sphinx 0.9.10 i nowsze będą mogły zwrócić kod produktu jako część wyników wyszukiwania, ponieważ obsługuje atrybuty ciągów.
0.9.10 nie jest jeszcze oficjalną wersją, ale wygląda świetnie. Wygląda na to, że Zawodny przejeżdża go na Liście Craiga więc nie byłbym zbyt zdenerwowany poleganiem na tej funkcji.