5

数日前にSphinxとThinking-SphinxをRubyonRails 2.3.2にインストールしましたが、基本的な検索はうまく機能します。これは、条件なしで意味します。ここで、いくつかの条件で検索をフィルタリングしたいと思います。

アナウンスモデルがあり、インデックスは次のようになります。

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

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

現在、acts_as_taggable_onプラグインも使用しています。これにより、タグとタグ付けの2つのdbテーブルが生成されます。タグのモデルはありません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

ありがとう、ブライアン

4

1 に答える 1

10

逆に質問にお答えします。 indexes whatever文字列が必要です。これは、sphinxが指定したテキストを検索するものです。

一方、has whateverこのコンテンツは検索可能なフィールドに追加しません。sphinxが既に検索を実行した後、ソートとフィルタリングにこのようなものを使用するため、主に数値が必要です。

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

于 2010-01-16T23:12:04.163 に答える