Солнечное пятно / полнотекстовый поиск Solr - как индексировать ассоциации направляющих

Действительно ли возможно индексировать через связь с Солнечным пятном?

Например, если Клиент has_many Контакты, я хочу 'доступный для поиска' блок на своей модели Customer, которая индексирует столбцы Contact#first_name и Contact#last_name для использования в поисках на Клиенте.

acts_as_solr имеет: включайте опцию для этого. Я просто комбинировал связанные имена столбцов в текстовое поле на Клиенте как показанный ниже, но это не кажется очень гибким.

searchable do
text :organization_name, :default_boost => 2
text :billing_address1, :default_boost => 2
text :contact_names do
  contacts.map { |contact| contact.to_s }
end

Какие-либо предложения?

7
задан Sam 11 April 2010 в 00:06
поделиться

2 ответа

Вот как это сделать. Solr, по сути, ориентирован на документы, поэтому любые данные, возникающие из ассоциаций в вашей базе данных, переносятся в ваш документ. Вариант: include - это просто мягкий сахар, который в конечном итоге делает то же самое, что и вы.

6
ответ дан 7 December 2019 в 09:59
поделиться

Конечно:

searchable do
  string :sort_contact_name do
    contacts.map { |contact| contact.last_name }.sort.first
  end
end

Тогда вы можете отсортировать по полю: sort_contact_name. Обратите внимание, что мне пришлось сократить набор имен контактов до одного имени, поскольку Solr может сортировать только те поля, которые имеют одно значение для каждого документа (что имеет смысл, если подумать).

0
ответ дан 7 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

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