0

我有一个产品模型,我正在尝试使用 Thinking Sphinx 进行搜索。该模型有一个名为 status 的属性,在指定的日期内可以是 Active、Not active 或 Active。

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

我是 Rails 的初学者,所以我正在寻找有关如何实现它的建议。我考虑在我的模型中放置一个布尔方法来计算这个逻辑,但我不认为这可以被 Sphinx 索引。

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

有没有人有什么好主意?

4

2 回答 2

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 查询时指定自定义列相同。

于 2009-07-18T14:17:29.867 回答