質問

私はレール2.3.2で私のルビーに何日か前にスフィンクスや思考-スフィンクスを設置し、基本的な検索が素晴らしい作品。これは、任意の条件なしで、意味します。今、私はいくつかの条件で検索をフィルタリングする。

私はアナウンスモデルを持っており、次のようにインデックスが見えます:

  define_index do
    indexes title, :as => :title, :sortable => true
    indexes description, :as => :description, :sortable => true
  end

たぶん私は間違っているんだけど、私は、私はこれらの属性に:sortable => true構文を追加したときにのみ、私は私の検索での条件としてそれらを使用できることに気づきました。それ以外の場合は、何かを見つけることができません。

タグとタギング:

さて、私も2デシベルのテーブルを生成しacts_as_taggable_onプラグインを、使用しています。私はちょうど私のアナウンスモデルでacts_as_taggable_on :tags, :categoriesている、タグのためのモデルを持っていません。

私が今したいことは、タグでフィルタリングすることです。だから、私は運と私のインデックスhas tags(:id), :as => :tag_idsに追加しようとした、ともindexes tags(:id), :as => :tag_idsが、それはどちらか動作しませんでした。

私はこのような何かを行うことができますので、

はどのようにインデックスを構築することができます:

Announcement.search 'some word', :conditions => {:tag_ids => some_id}

また、has及びindexes

とで異なります

おかげで、 ブライアン

役に立ちましたか?

解決

私は逆にご質問にお答えしましょう。 indexes whateverが、これはスフィンクスはあなたが提供するテキストを検索するものです、文字列を期待しています。

一方、has whateverは検索フィールドにこのコンテンツを追加しません。あなたはスフィンクスがすでに検索を行っている後にソートやフィルタリングのためにこのようなものを使用するので、それは主に数字を期待しています。

最後に、私はあなたの代わりにhas tags(:id), :as => :tag_idsを使用しての検索であなたのモデルで:with => {:tag_ids => some_id}、および:conditionsをしたいと考えています。条件は、代わりにすべてのフィールドの特定のフィールドにテキスト検索を実行するための方法として、あなたがインデックスされているテキストフィールドで使用されています。あなたはhas whateverで指定した属性を使用して結果をフィルタリングするために使用されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top