我有一个产品模型设置,我正在尝试使用Thinking Sphinx进行搜索。该模型具有一个名为status的属性,在指定日期期间可以是Active,Not active或Active。
我希望能够将搜索结果限制为有效的产品。即状态为活动状态或在日期期间处于活动状态,当前时间介于这些日期之间。
我是Rails的初学者,所以我正在寻找关于如何实现这一点的建议。我想在我的模型中设置一个布尔方法来计算这个逻辑,但我认为这不是Sphinx可以索引的。
我使用MySQL作为数据库服务器。
有没有人有任何好主意?
答案 0 :(得分:4)
你是对的,你的模型上的ruby方法不能被sphinx访问。但是,您可以将该方法重新创建为sphinx属性。这些可以很容易地使用像这样的SQL片段:
class Person < ActiveRecord::base
...
define_index do
has "status = 'active' and now() > start_date and now() < end_date", :as => :active, :type => :boolean
end
...
end
使用字符串指定类似的字段或属性与在构建SQL查询时指定自定义列相同。
答案 1 :(得分:0)
尝试#indexes方法(没试过自己,只是在谷歌搜索中注意到了)
http://www.slideshare.net/sazwqa/using-thinking-sphinx-with-rails-presentation
幻灯片11
另外:
http://www.mail-archive.com/rubyonrails-deployment@googlegroups.com/msg02046.html