2012-08-09 1 views
2

RavenDb에서 패싯 검색을 실행하는 방법이 있는지 묻지하지만 필터링 된 패싯도 가져옵니다.필터링 된 패싯 범위가 포함 된 RavenDb 패싯 검색

예 :

은의이 속성 Color : stringStatus : enum(New,Used)Car 엔티티를 보자.

내가 Red 차를 검색 할 때 나는 다른 모든 색상으로도 카운트하고 싶습니다. 마찬가지로 Used 차량을 검색하면 새 차량 수를보고 싶습니다. 내가 선택하지 않은 모든 경우

는 :

UI 
Color: [ ] Red (5) [ ] Blue (7) [ ] White (15) 
Status: [ ] Used (20) [ ] New (7) 

C# 
session.Query<Car, Cars_Index>().ToFacets("facets/Cars"); 

을 나는 적절한 결과를 얻을. 나는 현재 내가 각면에 대해 별도의 쿼리를 실행하는 일

UI 
Color: [x] Red (3) 
Status: [x] Used (3) 

C# 
session.Query<Car, Cars_Index>() 
    .Where(a => a.Status == CarStatus.Used) 
    .Where(a => a.Color == "Red") 
    .ToFacets("facets/Cars"); 

Response (JSON): 
{ "Color": [ { "Range": "Red", "Count": 3 } ], "Status" : [ { "Range": "Used", "Count": 3 } ] } 

는 :

var colorFacet = session.Query<Car, Cars_Index>() 
    .Where(a => a.Status == CarStatus.Used) 
    .ToFacets("facets/Cars"); 


var statusFacet = session.Query<Car, Cars_Index>() 
    .Where(a => a.Color == "Red") 
    .ToFacets("facets/Cars"); 

내가 좋아하는 것 내가 모두 ColorStatus 필터링하면

는하지만 매우 제한된 결과를 얻을 수 달성하기 :

UI 
Color: [x] Red (3) [ ] Blue (4) [ ] White (12) 
Status: [x] Used (3) [ ] New (7) 

그래서 사용 레드의 번호를 자동차, 블루 중고차, 화이트 중고차 및 사용자 레드 카, 새 레드 카. 따라서 사용자는 확인란을 클릭 할 때 어떤 일이 발생할지 즉각적인 피드백을받습니다.

패싯의 수와 변동성이 커지면 관리하기가 어려워집니다. 거기에 하나의 요청/쿼리에서 실행할 수있는 방법을 설정하는 방법이 있나요. 면은 (그 문제에 대한, 또는 일반적으로) RavenDB 작업하는 방법하지

감사

답변

2

. 현재 쿼리를 기반으로 패싯을보고 있지만 모든 패싯이 교차하지는 않습니다.

+0

음, 죄송합니다. 하지만 RavenDB가 아닌 Lucene의 기능이기 때문에 RavenDB 기능 요청으로 변경하는 것조차 없습니다. – puco