2013-03-03 2 views
2

나는이 질문에 대해 조사했지만 아무 것도 발견하지 못했습니다. 그게 내가 왜 물어보기로 결정했는지. Stackoverflow는 나를 위해 엄청난 도움이되었습니다.어레이 유형 속성에 대한 Sunspot 패싯 옵션

나는 하나의 속성이 위치 인 jobs 테이블을 가지고 있습니다. 각 job.location은 뉴욕, 보스턴 또는 둘 다 (뉴욕 & 보스턴)입니다.

sunspot solr for rails의 경우,이 속성에 대해 패싯을 작성하여 두 도시에 모두 job.location이 있으면 패싯에서 New York 또는 Boston을 선택한 경우 작업을 결과에 표시 할 수 있습니까?

배열과 같아야합니까? ['New York', 'Boston']?

감사합니다.

답변

1

별도의 Location 클래스를 가지며 Job 클래스가 many-to-many 관계이기 때문에 has_and_belongs_to_many :locations이되도록 디자인을 변경해야합니다. 그런 다음 당신은 위치에 대한 귀하의 작업 클래스 검색 블록의 정수 범위를 만들 수 있습니다

integer :locations, :multiple => true 

는 작업 당 여러 위치를 허용 할 수 있습니다.

이제 정확히 원하는대로 수행 할 facet(:locations)을 쉽게 추가 할 수 있습니다.

위의 내용은 2 개가 아닌 여러 위치에서 작동합니다. 그러나 새 클래스/테이블을 만들고 싶지 않고 위치가 1 ~ 2 개 밖에없는 경우 쿼리 범위 필드를 만들면됩니다.

integer :locations, :multiple => true do 
    if location == 'NY & Boston' 
    ['NY', 'Boston'] 
    else 
    [location] 
    end 
end