Поиск Solr в нескольких таблицах в рельсах

У меня есть три таблицы, в которых указаны бренды, сайты и категории товаров. Я хочу выполнять поиск во всех трех таблицах одновременно. Я использовал solr для поиска. Раньше я занимался поиском по одному. Это означает, что если пользователь вводит «adidas», то я ищу в таблице брендов, если нет, то я ищу в таблице сайтов и так далее. Основываясь на полученных результатах, я искал в какой-то другой таблице, скажем, main_nav_url, используя этот brand_id, site_id или category_id и получая необходимые столбцы из таблицы main_nav_url. Позже я столкнулся с этим конфликтом, например, если имя «adidas» присутствует как в таблице брендов, так и в таблице сайтов, я получаю только результаты поиска брендов.

Пожалуйста, помогите мне решить эту проблему, где я могу выполнять поиск во всех трех таблицах одновременно, на основе полученного результата извлечь их идентификатор бренда и идентификатор_сайта_идентификатора_категории и выполнить еще один поиск в таблице main_nav_url.


person user2218532    schedule 23.04.2013    source источник
comment
Привет, см. Драгоценный камень Ransack для поиска драгоценных камней, который помогает искать данные с помощью таблицы с несколькими палочками одновременно с использованием расширенного поискового запроса. см. учебник по отливке рельсов: 370.   -  person Bajirao Pheshwe    schedule 23.04.2013


Ответы (1)


Я получил ответ.

Выполните поиск solr отдельно, чтобы получить их brand_id, site_id и category_id. Сохраните соответствующие идентификаторы в массиве. Например

@storesearch.results.each do |result|
    siteids << result.id
end

В зависимости от длины brandid, siteid, catid выполняется поиск solr в таблице main_nav_url. В этом случае необходимо выполнить поиск solr для 9 разных случаев. 1 из случаев показан ниже.

if(siteids.length == 0 && brandids.length != 0 && catids.length != 0) @searchresults=MainNavigationUrl.search do any_of делать с :brand_id, brandids[0..brandids.length] с :main_category_id, catids [0..catids.length] конец конец

person user2218532    schedule 24.04.2013