2013-04-23 60 views
0

我有三个表格说品牌,网站和项目类别。我想同时在所有三个表中执行搜索功能。我用solr来执行搜索。以前我一次只进行一次搜索。这意味着如果用户输入'adidas',那么我在品牌表中搜索,如果没有得到,那么我正在搜索网站表格等等。基于获得的结果,我在其他表中搜索main_nav_url,使用brand_id或site_id或category_id并从main_nav_url表中获取所需的列。后来我遇到了这种冲突,就好像'阿迪达斯'这个名字出现在两个品牌和网站中一样,我只得到品牌的搜索结果。索尔在多个表中的轨道搜索

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

+0

你好,请参见“洗劫宝石”搜索宝石它帮助使用“高级搜索查询”在时间来搜索与multipale表数据。请参阅演员表:370。 – 2013-04-23 05:57:02

回答

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搜索。在这种情况下,必须执行solr搜索9种不同的情况。下面显示了1个案例。

如果(siteids.length == 0 & & brandids.length = 0 & & catids.length = 0!) @ SearchResult所= MainNavigationUrl.search做 any_of做 有:brand_id,brandids [0 .. brandids.length] 有:main_category_id,catids [0..catids.length] 结束 结束