2010-01-15 54 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