Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Sphinx sem usar um id auto_increment


Claro - isso é fácil de contornar. Se você precisar criar seus próprios IDs apenas para o Sphinx e não quiser que eles colidam, você pode fazer algo assim em seu sphinx.conf (exemplo de código para 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  
}

O único problema é que você ainda precisa saber quais registros foram correspondidos pela sua pesquisa. Sphinx retornará o id (que agora não tem sentido) mais quaisquer colunas que você marcar como "atributos".

O Sphinx 0.9.10 e superior poderá retornar o código do produto para você como parte dos resultados da pesquisa, pois possui suporte a atributos de string.

0.9.10 ainda não é um lançamento oficial, mas está ótimo. Parece que Zawodny está rodando na Craig's List então eu não ficaria muito nervoso em confiar nesse recurso.