5

Instalé Sphinx y Thinking-Sphinx hace algunos días en mi ruby ​​on rails 2.3.2, y la búsqueda básica funciona muy bien. Esto significa, sin ninguna condición. Ahora, quiero filtrar la búsqueda con algunas condiciones.Sphinx: cuándo usar 'has' e 'indexes' para los campos

que tienen el modelo de anuncio, y el índice es el siguiente:

define_index do 
    indexes title, :as => :title, :sortable => true 
    indexes description, :as => :description, :sortable => true 
    end 

Tal vez me equivoque, pero me di cuenta de que sólo cuando he añadido la sintaxis :sortable => true a estos atributos, podría utilizarlos como condiciones en mi búsqueda. De lo contrario, no encontrará nada.

Ahora, también estoy usando el plugin acts_as_taggable_on, que generó mis dos tablas de db: etiquetas y etiquetas. No tengo un modelo para etiquetas, solo tengo acts_as_taggable_on :tags, :categories en mi modelo Anuncios.

Lo que me gustaría hacer ahora es filtrar por etiquetas. Entonces, traté de agregar a mi índice has tags(:id), :as => :tag_ids sin suerte, y también indexes tags(:id), :as => :tag_ids, pero tampoco funcionó.

¿Cómo puedo construir los índices para que pueda hacer algo como esto:

Announcement.search 'some word', :conditions => {:tag_ids => some_id} 

Y también, que es la diferencia entre has y indexes

Gracias, Brian

Respuesta

10

Déjame responde tus preguntas al revés indexes whatever espera una cadena, esto es lo que sphinx buscará para el texto que proporcione.

Por otro lado, has whatever NO agrega este contenido a los campos de búsqueda. Espera principalmente números, porque usa esto para clasificar y filtrar después de que sphinx ya ha hecho la búsqueda. Por favor, creo que quiere has tags(:id), :as => :tag_ids en su modelo, y :with => {:tag_ids => some_id} en su búsqueda en lugar de usar :conditions. Las condiciones se usan en los campos de texto que ha indexado, como una forma de realizar búsquedas de texto en campos específicos en lugar de en todos los campos indexados. Con se utiliza para filtrar los resultados utilizando los atributos que ha especificado con has whatever.

+0

¡Muchas gracias! Lo intentaré. –

+0

No sé por qué, pero no está funcionando. Como dije antes, no tengo un modelo Tag, solo uso el plugin acts_as_taggable_on. ¿Es posible que el problema esté causando el problema? –

+0

Quiero decir, no tengo un campo 'etiquetas' en la tabla de anuncios. El complemento genera dos tablas: etiquetas y etiquetas. Entonces, la relación entre los anuncios y las etiquetas es a través de la tabla de etiquetas. ¿Tiene algo que ver con esto? –

Cuestiones relacionadas