Sunspot Solr, Рельсы и Заказ - PullRequest
       13

Sunspot Solr, Рельсы и Заказ

1 голос
/ 12 января 2012

У меня есть project модель в моем приложении rails 3.1, и я хочу использовать Solr для поиска по ней.

Я определил поиск следующим образом:

  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

Project-nr, в моей модели с именем nr, тип integer, является наиболее часто используемой ссылкой для поиска проекта.

Теперь, помимо формы поиска, мне все еще нужны мои проекты, упорядоченные по nrкогда поиск не был выполнен, но это не работает - мой проект выглядит в совершенно случайном порядке.Код моего действия индекса ProjectsController выглядит следующим образом:

  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

Но когда я захожу, тогда мои приложения / проекты получают ошибку

Sunspot::UnrecognizedFieldError in ProjectsController#index

No field configured for Project with name 'nr'

...

Любые идеи, что мне нужно сделать, чтобы заказать по Nr.?

спасибо

1 Ответ

0 голосов
/ 12 января 2012

Хорошо, я решил это, превратив поле nr в целое число в моем доступном для поиска:

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

Теперь я смог красиво оформить заказ, но больше не мог выполнять поиск текста по project_nr. Поэтому я добавил виртуальный атрибут name_number в свою модель Project и вместо этого провел поиск в этом поле.

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

Теперь у меня есть порядок и поиск на месте ... Если есть другие / лучшие идеи, продолжайте в том же духе!

...