Certo, è facile aggirarlo. Se devi creare i tuoi ID solo per Sphinx e non vuoi che entrino in conflitto, puoi fare qualcosa del genere nel tuo sphinx.conf (codice di esempio per 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
}
L'unico problema è che hai ancora bisogno di un modo per sapere quali record sono stati abbinati alla tua ricerca. Sphinx restituirà l'id (che ora è privo di significato) più tutte le colonne contrassegnate come "attributi".
Sphinx 0.9.10 e versioni successive saranno in grado di restituirti il codice prodotto come parte dei risultati della ricerca perché supporta gli attributi di stringa.
0.9.10 non è ancora una versione ufficiale, ma sembra fantastico. Sembra che Zawodny lo stia esaminando su Craig's List quindi non sarei troppo nervoso all'idea di fare affidamento su questa funzione.