Мышление Сфинкс: поиск по нескольким моделям: лучшие практики? - PullRequest
1 голос
/ 17 марта 2012

Я хочу добавить автозаполнение jquery с категориями. Запрос будет искать по нескольким моделям (темы форума, новости, пользователи ...) с Thinking Sphinx

Так что в контроллере, я думаю, это будет выглядеть так

def autocomplete
 @news = Actu.search(params[:term]).map {|g| {:label => g.title, :category => "Actualités", :id => g.id}}
 @topics = Topic.search(params[:term]).map {|g| {:label => g.title, :category => "Topics", :id => g.id}}
 @anotherModel = ...

 respond_to do |format|
   format.js { render :json => @news+@topics+@anotherModel }
 end
end

Это работает, но что вы думаете об этой практике?

Ответы [ 2 ]

4 голосов
/ 17 марта 2012

Вы можете попробовать этот удивительный синтаксис

ThinkingSphinx.search 'pancakes', :classes => [Article, Comment]

Подробнее на http://freelancing -god.github.com / ts / en / search.html

3 голосов
/ 17 марта 2012

Можно выполнить поиск по всем индексированным моделям в вашем приложении:

ThinkingSphinx.search(params[:term])

Затем вы можете определить для каждого метода модели, скажем, autocomplete_json, который возвращает хеш.

Итак, вашдействие

def autocomplete
  render :json => ThinkingSphinx.search(params[:term]).map(&:autocomplete_json)
end
...