Использование Websolr с Heroku для полнотекстового поиска - PullRequest
1 голос
/ 04 февраля 2011

Привет У меня возникли проблемы при попытке выяснить, как глобально реализовать форму поиска в моем приложении.У меня есть серия сообщений, которые должны быть доступны для поиска пользователями, которые вошли в систему и не вошли в нее. Я добавил этот код в свою модель сообщений:

searchable do 
text :content, :default_boost => 2 
text :body,    :default_boost => 1.5 
end    

Однако я не знаю, куда идтиоттуда, чтобы создать поле поиска на всех страницах и заставить его показывать результаты, которые мне нужны.Я новичок в рельсах и был бы рад опубликовать больше информации, если кто-то готов помочь мне.

1 Ответ

1 голос
/ 04 февраля 2011

Во-первых, вы должны добавить поле поиска, как описано в этом Railscast: http://railscasts.com/episodes/37-simple-search-form

Так как ваш поиск не относится к конкретной модели, используйте общее имя контроллера вместо ProjectsController.

Затем следует заменить искатель ActiveRecord на использование DSL Sunspot.

Вот пример кода, который поможет вам начать работу:

page = @page = params[:page] && params[:page].to_i || 1
@search = Sunspot.search(Realty) do # search_ids
  per_page = params[:per_page] && params[:per_page].to_i || 10

  # not adapted to your case
  with(:equipments).all_of params['equip'].split(' ') if params['equip']
  case params[:sort]
  when "average_rating"
    order_by :average_rating, :desc
  when "type"
    order_by :type, :asc
  end

  paginate :page => page, :per_page => per_page

  # other criteria...
end

По вашему мнению,затем вы можете перебирать @ search.results

<%= will_paginate @search.results %>

<% @search.results.each do |hit| %>
  <%# 'path' contains the stored polymorphic_path of each model object #%>
  <% link_to hit.stored('path') do %>
    <p><%= hit.stored('content') %></p>
  <% end %>
<% end %>

Наконец, использовать WebSolR вместо стандартного сервера SolR довольно просто, вы можете следовать инструкциям по настройке в https://github.com/onemorecloud/websolr-rails.

Редактировать: Как прокомментировал Ник, вы должны полностью перейти на http://docs.heroku.com/websolr. Спасибо, Ник!

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