2010-01-15 89 views
0

可以說我不想讓VPS或專用服務器像Thinking_Sphinx插件或許多其他全文搜索插件一樣運行常量索引。Rails:按類別搜索沒有全文

我有一堆名單數據庫中的名稱字段和類別字段(等)。

它有可能搜索某個類別中的名稱,而無需全文搜索插件需要不斷索引?我將如何去做這件事?

謝謝。我希望我已經清楚了。

回答

0

如果您只想搜索特定的列(或兩列),那麼肯定可以利用LIKE SQL運算符。

例如,使用軌道一named_scope

class MyModel < ActiveRecord::Base 
    named_scope :search, lambda { |query| 
    { :conditions => ["category like ?", "%#{query}%"] } 
    } 
end 

然後,在你的控制器,你可以不喜歡

@search_results = MyModel.search(params[:query]) 

有幾個缺點,這種方法:

  1. 您只搜索單個列。您可以充分利用Ruby的動態特性將其擴展到更多列,但是您絕對沒有像使用sphinx那樣獲得索引的優勢
  2. 這對於少量數據集可以正常工作。在獲得幾千行之後,您將開始需要一些體面的索引策略來保持這一速度,否則以這種方式搜索會顯着減慢。

希望有幫助。如果我誤解了這個問題,請告訴我。

+0

謝謝jerhine。你回答了我正在尋找的東西。我明白你的意思,並感謝你的缺點。我確實碰巧在高級搜索上找到了一個railscasts插曲,這也幫助了我。 http://railscasts.com/episodes/111-advanced-search-form – bob 2010-01-15 03:51:30