2012-10-20 3 views
0

내 프로젝트에서 :태그 조합을 색인 생성하는 방법은 무엇입니까?

  • 게시물에 많은 태그가 있습니다.
  • 태그 조합에 따라 게시물이 적절한 카테고리에 배치됩니다. 예 : #politics 태그 만있는 게시물은 "일반 정치"섹션으로 이동하고 #politics 및 #global 태그는 "글로벌 정치"섹션으로 이동합니다.
  • 테이블 '카테고리'는 카테고리와 카테고리를 저장합니다. 동의 할 태그의 조합.
  • 이러한 태그는 게시물에 포함 된 유일한 태그가 아닙니다.

내 질문은 : 시스템이 너무 쉽게 태그 조합을 선택할 수 있도록 태그를 저장하고 색인하는 가장 좋은 (경제적) 방법이 무엇입니까. 현재 배열로 "posts"테이블의 "tags"열에 태그를 저장하고 있습니다.

이 프로젝트는 RoR 3.2 및 sqlite3을 기반으로합니다. 쉽게 두 개 이상의 태그를 사용하여 개체의 acts_as_taggable_on 보석을 사용하여

답변

0

가장 쉽고 이러한 목표를 달성하기 위해 아마도 가장 빠른 방법은 게시물 검색 데이터와 태그가 태그 목록을 포함하여 다음 게시물 모델에 searchkick을 사용하는 것입니다.

  1. elasticsearch을 다운로드하여 설치하십시오. JDK가 제대로 작동하려면 JDK가 설치되어 있어야합니다.
  2. 설치 searckick gem.
  3. 당신의 post 모델이 추가

    class Post<<ActiveRecord::Base 
    
    attr_accessible :title , :body   
    has_many :tags 
    searchkick 
    
    def search_data 
        attributes.merge(tags: self.tags.map(&:name)) 
    end 
    

    당신이 또 다른 tag 모델 HVE 가정하면 : 태그의 조합에 쿼리를 수행하려면 이름 속성

  4. 을 바로 수행

    Post.search("tag1,tag2",fields:[:tags]) 
    

    이러한 쿼리는 매우 빠르며 탐색 구조를 만들기 위해이 논리를 자신있게 통합 할 수 있습니다.

참조 : Searckick Facets

1

조회 할 수 있습니다

결과 목록이 일치 수, 아마 첫 번째는 할당 할 일입니다 감소에 의해 정렬됩니다
matching_categories = @post.find_related_tags_for(Category) 

귀하의 게시물에

관련 문제