2014-06-10 5 views
0

ROR 4.01, elasticsearch 및 타이어 젬을 사용하십시오.타이어에 패싯을 곱 하시겠습니까?

제 모델

class Article 
belongs_to: region 
belongs_to: house 
end 

def self.search(params) 
    tire.search(page: params[:page], per_page: 12) do 
     query { string params[:query], default_operator: "AND" } if params[:query].present? 
     filter :term, region_id: params[:region_id] if params[:region_id].present? 
     filter :term, house_id: params[:house_id] if params[:house_id].present? 

     facet "regions" do 
     terms :region_id 
     end 

     facet "houses" do 
     terms :house_id 
     end 

    end 
    end 

제 컨트롤러

def index 
    if params[:query].present? 
     @articles = Article.search(params) 
    else 
     @articles = Article.all 
    end 
end 

제 인덱스보기 지역이나 주택 소유자의 작품을 기반 기사에

%h3 Regions 
      %ul 
      - @articles.facets['regions']['terms'].each do |facet| 
      %li 
       = link_to_unless_current Region.find(facet['term']).name, params.merge(region_id: facet['term']) 
       - if params[:region_id] == facet['term'].to_s 
       (#{link_to "remove", region_id: nil}) 
       - else 
       (#{facet['count']}) 
      %h3 House Owners 
      %ul 
      - @articles.facets['houses']['terms'].each do |facet| 
      %li 
       = link_to_unless_current House.find(facet['term']).name, params.merge(house_id: facet['term']) 
       - if params[:house_id] == facet['term'].to_s 
       (#{link_to "remove", house_id: nil}) 
       - else 
       (#{facet['count']}) 

필터링/측면. 그러나 둘 다. 어떻게 함께 작동 할 수 있습니까?

곱셈 패싯으로 작업 하시겠습니까? 그게 가능할까요?

terms가의 배열을 받아 들여야 ...

감사

REMCO

답변

1

tire is deprecated 아니라 현재 Elasticsearch 버전에서 지원, 그래서 메모리와 여기에 소스 코드에서거야하지만, 자귀.

당신은 따라서 두 용어와면 만들 수있을 것입니다 :

facet "houses_regions" do 
    terms [:house_id, :region_id] 
    end