簡體   English   中英

結合使用Websolr和Heroku進行全文搜索

[英]Using Websolr with Heroku to do full text search

嗨,我在嘗試弄清楚如何在整個應用程序中全局實施搜索表單時遇到了麻煩。 我有一系列帖子,需要登錄的用戶和未登錄的用戶可以搜索。我在帖子模型中添加了以下代碼:

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

但是,我不知道從那里到哪里可以在所有頁面上創建搜索字段並使它顯示我需要的結果。 我是Rails的新手,如果有人願意幫助我,我們將樂意發布更多信息。

首先,您應該像在以下railscast中所述添加搜索字段: http: //railscasts.com/episodes/37-simple-search-form

由於搜索不是特定於特定模型的,因此請使用通用控制器名稱而不是ProjectsController。

然后,您應該使用Sunspot DSL替換ActiveRecord查找程序。

以下是示例代碼,可幫助您入門:

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上的設置說明進行操作

編輯:正如Nick所說,您應該完全轉到http://docs.heroku.com/websolr 謝謝尼克!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM