Sunspot Solr Rails - 使用“with”搜索多个模型

Posted

技术标签:

【中文标题】Sunspot Solr Rails - 使用“with”搜索多个模型【英文标题】:Sunspot Solr Rails - Search Multiple Models using 'with' 【发布时间】:2013-09-19 01:50:49 【问题描述】:

我在我的应用程序中安装 Solr 取得了一些成功。我已经设法搜索了两个模型,但现在正尝试使用“with”子句微调我的搜索。

我的事件模型有:

class Event < ActiveRecord::Base
  searchable do
   text :headline, :info
   time :event_date
  end
end

我的场地模型有:

class Venue < ActiveRecord::Base
  searchable do
   text :name, :address_1, :address_2, :town, :postcode
  end
end

然后我有一个搜索控制器,我之前设法根据我的params[:search] 返回事件和场地。我现在正在尝试返回即将举行的活动和场地,但由于场地中没有“event_date”,我现在只能返回这些活动。简而言之,如何使with(:event_date) 仅适用于事件模型?

class SearchController < ApplicationController
  def search
    @search = Sunspot.search [Event, Venue] do
      fulltext params[:search]
      with(:event_date).greater_than(Time.zone.now)
    end
    @results = @search.results
    respond_to do |format|
      format.json  render json: @results 
    end
  end  
end  

【问题讨论】:

+1 已加星标 也希望看到对此的一些想法 【参考方案1】:

您可以做的一件事是将此字段添加到其他“可搜索”字段,如下所示:

class Venue < ActiveRecord::Base
  searchable do
   text :name, :address_1, :address_2, :town, :postcode
   time :event_date  Time.zone.now 
  end
end

你可以在 #here 中放任何你想要的东西

希望对你有帮助

【讨论】:

``` time :event_date do Time.zone.now end``` 理想的情况是从太阳黑子中进行一些范围查询,然后组合结果。 你能澄清一下添加块允许你做什么吗?这是否允许 OP 做他想做的事?

以上是关于Sunspot Solr Rails - 使用“with”搜索多个模型的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sunspot solr 索引文本(大数据)字段

无法让 rails 搜索表单与 simple_form 和 sunspot 一起使用

sunspot_rails gem - “ Errno:: ECONNREFUSED(连接被拒绝 - 连接(2))”

如何使用 Sunspot 设置具有多对多关系的构面搜索?

rails solr search 限制总搜索结果/获得固定数量的结果

Rails 应用程序:Solr 在执行搜索时抛出 RSolr::Error::Http - 404 Not Found