0

Thinking Sphinx で検索しようとしている製品モデルがセットアップされています。モデルにはステータスと呼ばれる属性があり、指定された日付の間、アクティブ、非アクティブ、アクティブのいずれかになります。

検索結果をアクティブな製品に限定したいと考えています。つまり、ステータスがアクティブであるか、ステータスがアクティブである日付で、現在の時刻がそれらの日付の間にある場合です。

私は Rails の初心者なので、これをどのように実装できるかについての提案を探しています。このロジックを計算するブール メソッドをモデルに入れることを考えましたが、これは Sphinx でインデックス化できるとは思いません。

データベースサーバーとして MySQL を使用しています。

誰か明るいアイデアを持っていますか?

4

2 に答える 2

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 クエリを作成するときにカスタム列を指定することと同じです。

于 2009-07-18T14:17:29.867 に答える
-1

#indexes メソッドを試してください(自分で試したことはありません。グーグルで調べただけです)

http://www.slideshare.net/sazwqa/using-thinking-sphinx-with-rails-presentation

スライド 11

http://rdoc.info/rdoc/freelancing-god/thinking-sphinx/blob/04320b610b3a665ca1885cc2e6f29354d029e49a/ThinkingSphinx/Index/Builder.html#indexes-instance_method


また:

http://www.mail-archive.com/rubyonrails-deployment@googlegroups.com/msg02046.html

于 2009-07-19T10:15:23.670 に答える