1

私のWebアプリitemsでは、次の条件でテーブルに対して3種類の検索を実行する必要があります。

  1. items.is_public = 1titleインデックス作成にフィールドを使用)-多くの結果を取得できます(カーディナリティは他の場合よりもはるかに高くなります)

  2. items.category_id = {X}(インデックス作成にはtitle+private_notesフィールドを使用)-通常は100未満の結果

  3. items.user_id = {X}(インデックス作成にはtitle+private_notesフィールドを使用)-通常は100未満の結果

これらすべてのケースでSphinxを機能させる方法を見つけることはできませんが、最初のケースではうまく機能します。最初のケースにのみSphinxを使用し、MySQLで単純な古い「遅い」全文検索を使用する必要がありますか(少なくとも2〜3のケースではカーディナリティが低いため)?

それとも私だけで、Sphinxはほとんどすべてを行うことができますか?

4

1 に答える 1

1

あなたのモデルの完全な知識がなければ、私は何かが欠けているかもしれませんが、これはどうですか?

class item < ActiveRecord::Base
  define_index do
    indexes :title
    indexes :private_notes
    has :is_public, :type => :boolean
    has :category_id
    has :user_id
  end
end

1)

Item.search(:conditions => {:title => "blah"}, :with => {:is_public => true})

2)

Item.search("blah", :with => {:category_id => 1})

3)

Item.search("blah", :with => {:user_id => 196})
于 2010-05-19T11:08:54.423 に答える