Вопрос по ruby-on-rails, ruby-on-rails-3, sunspot, solr, full-text-search – Solr Sunspot - поиск принадлежит_ к ассоциации

4

У меня есть модель тканей, которая принадлежит нескольким другим столам.

class Fabric < ActiveRecord::Base
  validates :name, presence: true
  belongs_to :design
  belongs_to :composition
  belongs_to :collection
  belongs_to :style
  belongs_to :origin
  belongs_to :texture
  belongs_to :supplier
  has_and_belongs_to_many :colours

  searchable do
    text :name, :boost => 5 
    text :description
    text :composition do
      composition.name
   end
    text :collection do
      collection.name
    end
   text :style do
     style.name
   end
   text :origin do
     origin.name
   end
   text :texture do
     texture.name
  end
   text :supplier do
      supplier.name
  end
  end
  end

Я настроил все обратные ассоциации (Has_many) и т. Д. Однако я не могу получить полнотекстовый поиск для запроса полей имени всех этих связанных таблиц.

Любая помощь будет принята с благодарностью.

 @search = Fabric.search do
    fulltext params[:search]
  end
  @fabrics = @search.results

Росс

это то, что вы ищете, большое спасибо. RMcNairn
Вы можете показать свой блок поиска? вам тоже нужно переиндексировать. Chamnap
да, проверьте мой ответ. Chamnap

Ваш Ответ

3   ответа
3

Запустите эту команду для переиндексации:

bundle exec rake sunspot:solr:reindex
9

чтобы указать, по каким полям вы хотите искать.

@search = Fabric.search do
  fulltext params[:search] do
    fields(:collection, :style, :origin)
  end
  .....
end

Вот как вы индексируете свой блок поиска. Solr думает с точки зрения документа. Это не важно, ассоциация это или нет.

searchable do 
  text :collection do 
    collection.text 
  end
end

Тогда переиндексация.

Проверьте это для более подробной информацииhttps://github.com/sunspot/sunspot#full-text

https://github.com/sunspot/sunspot#setting-up-objects

Я просто обновляю свой ответ. Проверьте это снова.
если каждая из связанных таблиц: collection,: style и т. д. имеет текстовый столбец: name, выполняет ли этот метод поиск по этим столбцам? RMcNairn
10

не забудьте проверить это, иначе вы получите ошибку при перестройке индекса

text :collection do 
  collection.name if collection
end

Похожие вопросы