Комплексный поиск (эластичный поиск) на нескольких моделях с одним запросом - PullRequest
0 голосов
/ 01 апреля 2019

Поиск лучшего способа поиска во многих Моделях с помощью одного запроса, отправленного пользователем.

Индексация основных Моделей по его отношениям.В настоящее время поиск работает по каждой модели, но ничто не является «общим» или «разделенным».

def self.search_kick(query, searchkick_options={})
  options = {
    fields: %w[name^5 specialities.name^5 description^2 business_sectors.name employees.firstname employees.lastname race.name race.fullname animals.name premium ratings_count],
    boost_by: {ratings_count: {boost_mode: "multiply"}},
    boost_where: {premium: [{value: 1, factor: 0.1}, {value: 2, factor: 2000}]}
  }
  search(query, options.merge(searchkick_options))
end

Я ищу поиск по многим моделям с одним запросом.На самом деле, у меня есть эта структура данных: - Основная модель: LocalBusiness - LocalBusiness есть много: Животные - LocalBusiness есть много: Секторы - LocalBusiness принадлежит: Адрес

Я ищу, чтобы иметь возможность искать что-то вроде: "ВетеринарияDogs Seattle "

На самом деле, если у меня есть LocalBusiness, связанный с собаками и расположенный в Сиэтле, этот запрос не будет работать, если только я не добавлю в его собственное описание" dogs "и" seattle ".Если я ищу только «Ветеринария», «Собаки», «Сиэтл», я нахожу это каждый раз, но не когда запускаю запрос индивидуально.

Я работаю с Searchkick на Ruby on Rails.

...