Rails:按类别搜索而不使用FullText

时间:2010-01-15 01:45:30

标签: mysql ruby-on-rails database search

让我们说我不想让VPS或Dedicated Server需要运行常量索引,就像使用Thinking_Sphinx插件或许多其他用于ruby on rails的全文搜索插件一样。

我在数据库中有一堆列表,其中包含名称字段和类别字段(以及其他内容)。

如果没有需要不断索引的全文搜索插件,是否可以在某个类别中搜索名称?我将如何做到这一点?

谢谢。我希望我已经足够清楚了。

1 个答案:

答案 0 :(得分:0)

如果您只想搜索特定列(或两列),您当然可以利用LIKE SQL运算符。

例如,在rails中使用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. 这适用于小型数据集。在你获得几千行之后,你将开始需要一些不错的索引策略来保持这种速度,否则以这种方式搜索将会显着减慢。
  3. 希望这会有所帮助。如果我误解了这个问题,请告诉我。