0

我有三个表,分别是品牌、网站和项目类别。我想同时在所有三个表中执行搜索功能。我使用 solr 进行搜索。以前我是一次搜索一个。这意味着如果用户输入“阿迪达斯”,那么我在品牌表中搜索,如果没有得到,那么我在网站表中搜索,依此类推。根据获得的结果,我在其他一些表中搜索说 main_nav_url 使用该brand_id 或 site_id 或 category_id 并从 main_nav_url 表中获取所需的列。后来我遇到了这种冲突,例如如果品牌和网站表中都存在“阿迪达斯”名称,我只能得到品牌的搜索结果。

请帮我解决这个问题,我可以同时在所有三个表中搜索,根据获得的结果提取它们的brand-id和site_id category_id,并在main_nav_url表中再执行一次搜索。

4

1 回答 1

0

我得到了答案。

分别执行 solr 搜索以检索他们的brand_id、site_id 和 category_id。将对应的 id 存储在一个数组中。例如

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

根据brandids、siteids、catids的长度在main_nav_url表中执行solr搜索。在这种情况下,必须对 9 种不同的情况执行 solr 搜索。其中1个案例如下所示。

if(siteids.length == 0 && brandids.length != 0 && catids.length != 0) @searchresults=MainNavigationUrl.search 用 :brand_id 做 any_of,brandids[0..brandids.length] 用 :main_category_id, catids [0..catids.length] end end

于 2013-04-24T07:30:43.020 回答