Jistě – to se dá snadno obejít. Pokud si potřebujete vytvořit vlastní ID jen pro Sphinx a nechcete, aby se srazila, můžete něco takového udělat ve svém sphinx.conf (ukázkový kód pro 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
}
Jediným problémem je, že stále potřebujete způsob, jak zjistit, jaké záznamy se shodovaly s vaším vyhledáváním. Sphinx vrátí id (které nyní nemá smysl) plus všechny sloupce, které označíte jako "atributy".
Sphinx 0.9.10 a vyšší vám budou moci vrátit kód vašeho produktu jako součást výsledků vyhledávání, protože podporuje řetězcové atributy.
0.9.10 ještě není oficiální vydání, ale vypadá skvěle. Vypadá to, že Zawodny to přejíždí na Craigově seznamu takže bych nebyl příliš nervózní ze spoléhání na tuto funkci.