2011-03-09 3 views
2

나는 저장소 형 레일 3 사이트를 구성하고 있습니다. 나는 생각하고있는 스핑크스를 설치하고 내 사이트에서 일하고있다. 나는 localhost:3000/articles?search=test&page=2과 같은 URL을 입력 할 수 있으며 예상되는 결과를 리턴 할 것이다.스핑크스를 생각해보기 Faceted Search 구현 예?

저는 레일즈 (그리고 웹 개발자)에게 처음입니다; 저는이 모델과 컨트롤러 측면을 관리 할 수 ​​있다고 생각합니다. 그러나 뷰는 지금까지 저를 곤혹스럽게했습니다. 검색 인터페이스로 사용하고자하는 사이드 바가 있습니다.

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

검색 방법은 내 기사 # 지수 컨트롤러에, 나는 그것을 테스트 할 때 브라우저가 해당 페이지로 지적 될 때 (라우팅 : 내가 온 가장 가까운이 (부분 사이드 바의 일부로서 렌더링)입니다 /articles) 예상대로 작동하지만이 홀수 URL은 localhost:3000/articles?utf8=✓&search=test&commit=Search입니다. 브라우저가 처음에 루트 경로를 가리키면 아무 일도 일어나지 않습니다.

그래서, 나는이 내가 해결해야 할 주요 이슈 생각 :

  1. EDIT를 - 해결
  2. 내가 자신의 컨트롤러에 검색 방법을 이동해야하거나 일부가되어야합니다 (아래 참조) 기사 컨트롤러의? 지금은 Article이 색인 된 유일한 모델이 될 것입니다.
  3. 수정 됨 (아래 참조)
  4. 레일스 3 및 스핑크스를 사용하여면 탐색보기의 좋은 예제 코드가 있습니까? 내가 말했듯이, 나는 신입생의 일부이며,보기 구현에 의한 문서 작성에 약간의 어색함이 있습니다. 그러나 필자는 합리적으로 완성 된 코드를 읽고 해석하는 데 상당히 능숙합니다.

미리 감사드립니다.

는 해결 :

  1. 가 어떻게 '검색'버튼을 검색하기 전에 인덱스 메소드를 호출해야합니까? (나는 이것을 @searcharticles_path으로 대체하여 이것을 해결했다.)

  2. 이전에 문제가있는 will_paginate을 사용하여 해결되었지만 현재 작동하고있는 것 같습니다. 내가

    이 제품은 여러 종류가 있습니다, 우리는 우리가 측면으로 인덱스 그들에게 원하는 스핑크스에게 SOLR로 전환하기 전에 헤이

답변

3

, 이 내 사이트가 어떻게 작동하는지의 추출물

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 

그런 다음보기에서 somet 힌지 형

<% @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 %>