【问题标题】:Solr search in multiple tables in railsSolr在rails中的多个表中搜索
【发布时间】:2013-04-23 05:07:54
【问题描述】:

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

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

【问题讨论】:

  • 您好,请参阅“Ransack gem”搜索gem,它有助于使用“高级搜索查询”在时间搜索多表数据。请参阅 rails cast 教程:370。

标签: ruby-on-rails solr


【解决方案1】:

我得到了答案。

分别执行 solr 搜索以检索其品牌 ID、站点 ID 和类别 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 做 any_of 做 带有:brand_id,brandids[0..brandids.length] 与 :main_category_id, catids[0..catids.length] 结尾 结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 2017-04-23
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2015-11-02
    相关资源
    最近更新 更多