Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sphinx ohne Verwendung einer auto_increment-ID

Sicher - das ist einfach zu umgehen. Wenn Sie Ihre eigenen IDs nur für Sphinx erstellen müssen und nicht möchten, dass sie kollidieren, können Sie so etwas in Ihrer sphinx.conf (Beispielcode für MySQL) tun.

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  
}

Das einzige Problem ist, dass Sie immer noch wissen müssen, welche Datensätze bei Ihrer Suche gefunden wurden. Sphinx gibt die ID (die jetzt bedeutungslos ist) plus alle Spalten zurück, die Sie als "Attribute" markieren.

Sphinx 0.9.10 und höher kann Ihnen Ihren Produktcode als Teil der Suchergebnisse zurückgeben, da es String-Attribute unterstützt.

0.9.10 ist noch keine offizielle Version, sieht aber großartig aus. Es sieht so aus, als ob Zawodny es bei Craig's List rüberbringt Ich würde also nicht allzu nervös sein, mich auf diese Funktion zu verlassen.