Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sphinx sans utiliser d'identifiant auto_increment

Bien sûr - c'est facile à contourner. Si vous avez besoin de créer vos propres identifiants juste pour Sphinx et que vous ne voulez pas qu'ils entrent en collision, vous pouvez faire quelque chose comme ça dans votre sphinx.conf (exemple de code pour 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  
}

Le seul problème est que vous avez toujours besoin d'un moyen de savoir quels enregistrements correspondent à votre recherche. Sphinx renverra l'identifiant (qui n'a plus de sens) plus toutes les colonnes que vous marquez comme "attributs".

Sphinx 0.9.10 et supérieur pourra vous renvoyer votre code produit dans les résultats de la recherche car il prend en charge les attributs de chaîne.

La 0.9.10 n'est pas encore une version officielle, mais elle a fière allure. Il semble que Zawodny l'exécute sur Craig's List donc je ne serais pas trop nerveux à l'idée de compter sur cette fonctionnalité.