2009-07-18 48 views
0

我有一个产品模型设置,我试图用思维狮身人面像搜索。该模型具有一个称为状态的属性,该属性在指定的日期可以是活动的,不活动的或活动的。在思维狮身人面像索引计算字段的搜索条件

我希望能够将我的搜索结果限制为活动的产品。即在日期中具有活动状态或活动状态,并且当前时间在这些日期之间。

我是Rails的初学者,所以我正在寻找关于如何实现这一点的建议。我想在我的模型中加入一个布尔方法来计算这个逻辑,但我认为这不是由Sphinx索引的。

我正在使用MySQL作为数据库服务器。

有没有人有任何明智的想法?

+0

我只是在想,解决这个问题的一种方法是创建一个名为is_active的额外字段,并且每晚都有一个cron作业运行,并且如果状态处于活动状态或当前时间在指定日期之间,则将该字段设置为true否则将其设置为false。我想我还需要重写模型中的保存命令,以便在更新中更改其状态时,对各个产品执行相同的操作。 – Caps 2009-07-18 02:30:46

回答

4

你是对的,你的模型上的ruby方法不能访问狮身人面像。但是,您可以将该方法重新创建为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查询时指定自定义列。

+0

非常感谢!看起来它会起作用。 – Caps 2009-07-19 22:36:33

0
+0

感谢您的资源 - 这些都非常棒! – Caps 2009-07-19 22:37:48

相关问题