2011-03-09 135 views
2

我正在放置一個存儲庫式的rails 3網站。 我有思想獅身人面像安裝和工作在我的網站,因爲我可以進入像localhost:3000/articles?search=test&page=2的網址,它會返回預期的結果。思考獅身人面像分面搜索實現示例?

我是新來的Rails(和web dev一般);我想我可以管理這個模型和控制器方面,但迄今爲止的觀點讓我難以置信。我有一個我想用作搜索界面的邊欄。我來最接近的是這樣的(呈現爲一個側邊欄部分的一部分):

<% form_tag @search, :method => :get do %> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search"%> 
<% end %> 

的搜索方法是在我的文章#指數控制器,當我測試它在瀏覽器指向該頁面(路由作爲/articles),它按預期工作,但有這個奇怪的網址:localhost:3000/articles?utf8=✓&search=test&commit=Search。當瀏覽器首先指向根路徑時,什麼都不會發生。

所以,我覺得這些都是我需要解決的主要問題:

  1. 編輯 - 解決(見下文)
  2. 我應該移動搜索方法,以自己的控制器,或者他們應該是部分的物品管制員?目前,文章將是唯一被索引的模型。
  3. 編輯 - 解決(見下文)
  4. 有沒有人有任何使用Rails 3和Thinking Sphinx的分面搜索視圖的示例代碼?就像我說的那樣,我是一個初學者,並且被視圖實現所掠奪的文檔有點驚慌。但是,只要它相當完整,我就很善於閱讀和解釋代碼。

在此先感謝!

解決:

  1. 如何讓「搜索」按鈕,試圖尋找之前調用索引方法? (我通過用articles_path代替@search解決了這個問題)。

  2. 使用will_paginate解決,我之前遇到過麻煩,但現在似乎正在工作。

回答

3

嘿, 這是我的網站是如何運作的提取物之前,我切換到Solr

產品有很多種類,我們告訴我們想要索引他們的面斯芬克斯

class Product < ActiveRecord::Base {  
    has_many :categorisations, :dependent => :destroy 
    has_many :categories, :through => :categorisations   

define_index do 
    indexes product_name, 
    indexes description 
    indexes categories(:name), :as => :category,:facet => true  
end 
} 

結果控制器

class ResultsController < ApplicationController 
    def index 
     @facets = Product.facets params[:qt], :conditions => {:category => params[:category}},:page => params[:page], :per_page => 20 
     @products = @facets.for 
    end 
end 

然後在視圖中你可以做一些hing like

<% @facets.each do |facet, facet_options| %> 
    <span><%= facet %></span> 
    <ul> 
    <% facet_options.each do |option, count| %> 
    <li><%= link_to "#{option} (#{count})", 
     :params => {facet => option, :page => 1} %></li> 
    <% end %> 
    </ul> 
<% end %>