2008-11-03 18 views
9

Estoy usando Thinking Sphinx para búsqueda de texto completo, siguiendo this video.Cómo agrego la condición "IS NOT NULL" a una búsqueda de Thinking Sphinx

me gustaría hacer lo siguiente:

@articles = Article.search(params[:search], :conditions => "published_at IS NOT NULL", :order => :created_at) 

El problema es que esto no funciona. Parece que el método de búsqueda solo acepta condiciones que son un hash. He intentado un par de maneras, pero estoy desorientado en cuanto a cómo puedo representar "published_at NO ES NULO" como un hash ...

Respuesta

24

se le dio la solución durante al Railscasts

Si quiere * todos * resultados para que ese modelo filtre los registros donde published_at IS NULL, agrega 'where' published_at IS NOT NULL '' a tu bloque define_index.

Si es sólo a veces, añadir published_at como un atributo, y luego esfinge debe almacenar fechas nulas como 0 de, por lo que se puede filtrar usando: sin => {: published_at => 0}

La segunda solución era lo que necesitaba.

+0

Tantas cosas buenas en una respuesta :) –

+0

¿Sigue siendo válida esta respuesta para ThinkingSphinx 3.2 @pat? 'sin => {: published_at => 0}' parece que ya no funciona – 0x4a6f4672

Cuestiones relacionadas