Pregunta

Tengo un modelo project en mi aplicación rails 3.1 y quiero usar Solr para ejecutar una búsqueda en él.

Definí la búsqueda así:

  searchable do
    text :nr, :boost => 5  # nr is integer
    text :name, :boost => 5
    text :description, :boost => 2
    text :client do
      client.name
    end
    text :tasks do 
      tasks.map(&:name)
    end
  end

El project-nr, en mi modelo llamado nr, tipo integer, es la referencia más utilizada para encontrar un proyecto.

Ahora, además de tener un formulario de búsqueda, todavía quiero que mis proyectos estén ordenados por nr cuando no se realizó ninguna búsqueda, pero esto no funciona - mi proyecto parece estar en un orden totalmente aleatorio. El código de mi acción de índice ProjectsController se ve así:

  def index
    @search = Project.search do
      fulltext params[:search]
      paginate :page => params[:page]
      order_by :nr, :desc
    end 

    @projects = @search.results

    #@projects = Project.active.visible.design.order("nr desc")
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @projects }
    end

Pero cuando visito myapp / projects obtengo un

Sunspot::UnrecognizedFieldError in ProjectsController#index

No field configured for Project with name 'nr'

error ...

alguna idea de lo que necesito hacer para ordenar por nr.?

gracias

¿Fue útil?

Solución

Está bien, lo resolví convirtiendo el campo nr en un número entero en mi búsqueda:

searchable do
  integer :nr
  text :name, :boost => 5
  text :description, :boost => 2
  text :client do
    client.name
  end
  text :tasks do 
    tasks.map(&:name)
  end
end

Ahora pude ordenarlo bien, pero ya no pude realizar una búsqueda de texto en project_nr. Así que agregué un atributo virtual name_number a mi modelo Project y en su lugar busqué en este campo.

  def name_number
    "#{self.nr} - #{self.name[0..24]}"
  end

Ahora tengo el pedido y la búsqueda en su lugar ... Si hay otras / mejores ideas, ¡sigan viniendo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top