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

Sphinx uden at bruge et auto_increment-id

Selvfølgelig - det er nemt at omgås. Hvis du har brug for at lave dine egne ID'er kun for Sphinx, og du ikke vil have dem til at kollidere, kan du gøre sådan noget i din sphinx.conf (eksempelkode for 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  
}

Det eneste problem er, at du stadig har brug for en måde at vide, hvilke poster der matchedes af din søgning. Sphinx returnerer id'et (som nu er meningsløst) plus eventuelle kolonner, som du markerer som "attributter".

Sphinx 0.9.10 og nyere vil være i stand til at returnere din produktkode til dig som en del af søgeresultaterne, fordi den understøtter strengattributter.

0.9.10 er ikke en officiel udgivelse endnu, men det ser godt ud. Det ser ud til, at Zawodny kører det over på Craigs liste så jeg ville ikke være for nervøs for at stole på denne funktion.



  1. MySQL eller tilstand

  2. 5 MySql nyttige forespørgsler under projektudvikling

  3. Oracle UNION-operatør forklaret

  4. Sådan opretter du flere en til ens