Rails: поиск по категориям без FullText - PullRequest
0 голосов
/ 15 января 2010

Допустим, я не хочу, чтобы VPS или выделенный сервер требовался для постоянной индексации, как с плагином Thinking_Sphinx или многими другими плагинами полнотекстового поиска для ruby ​​on rails.

У меня есть куча списков в базе данных с полем Имя и поле категории (среди прочего).

Можно ли искать имя в определенной категории, не имея плагина полнотекстового поиска, который требует постоянной индексации? и как бы я поступил так?

Спасибо. Надеюсь, я был достаточно ясен.

1 Ответ

0 голосов
/ 15 января 2010

Если вы хотите просто выполнить поиск в определенном столбце (или двух), вы, безусловно, можете воспользоваться оператором 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. Это будет хорошо работать для небольших наборов данных. После того, как вы получите несколько тысяч строк, вы начнете нуждаться в некоторых приличных стратегиях индексирования, чтобы сохранить это быстрым, в противном случае поиск по этому пути резко замедлится.

Надеюсь, это поможет. Если я неправильно понял вопрос, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...