Mysql
 sql >> Database >  >> RDS >> Mysql

Sphinx senza utilizzare un ID auto_increment

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.