2010-05-19 47 views
1

在我的web應用程序,我需要執行與以下條件對items表檢索的3種類型:有沒有可能在動態條件下使用Sphinx搜索?

  1. items.is_public = 1(使用title字段建立索引) - 很多成果可以檢索(基數要高得多比在其他情況下)

  2. items.category_id = {X}(使用用於索引title + private_notes字段) - 通常小於100個結果

  3. items.user_id = {X}(使用索引title + private_notes場) - 通常少於100個結果

我不能找到一種方法,使在所有這些情況獅身人面像的工作,但它運作良好,在第一種情況。 我應該使用Sphinx僅僅用於第一種情況,並在MySQL中使用普通的「慢」FULLTEXT搜索(至少是因爲2-3例中的低基數)?

還是隻是我和獅身人面像可以做幾乎所有的東西?

回答

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}) 
+0

謝謝!我發現think_sphinx比Ultrasphinx寶石更強大。所以現在不需要切換回非獅身人面像FULLTEXT搜索。 – ep3static 2010-05-20 05:29:37