의 범위에서 문서를 계산 :SOLR 여기에 내가 가진 몇 가지 예를 SOLR 문서 두 개의 날짜 필드
{
"id": "1",
"openDate": "2017-12-01T00:00:00.000Z",
"closeDate": "2017-12-04T00:00:00.000Z"
},
{
"id": "2",
"openDate": "2017-12-02T00:00:00.000Z",
"closeDate": "2017-12-04T00:00:00.000Z"
},
{
"id": "3",
"openDate": "2017-12-02T00:00:00.000Z",
"closeDate": "2017-12-06T00:00:00.000Z"
}
날짜 문서가 "활성"이라고이 openDate (포함) 사이의 날짜가됩니다 closeDate (독점). 나는 매일에 "활성"있는 문서의 수를 계산하려면, 그래서 출력은 다음과 같아야합니다
[
{
Date: 2017-12-01,
count: 1
},
{
Date: 2017-12-02,
count: 3
},
{
Date: 2017-12-03,
count: 3
},
{
Date: 2017-12-04,
count: 1
},
{
Date: 2017-12-05,
count: 1
}
]
이 다중 값 날짜 필드를 유지하는 것입니다 해결하는 한 가지 쉬운 방법 (openDates
라고 말) 관심의 범위에서 모든 날짜에, 그래서 우리는이 같은 문서를 확장
{
"id": "1",
"openDate": "2017-12-01T00:00:00.000Z",
"closeDate": "2017-12-04T00:00:00.000Z",
"openDates": ["2017-12-01T00:00:00.000Z",
"2017-12-02T00:00:00.000Z",
"2017-12-03T00:00:00.000Z"]
},
{
"id": "2",
"openDate": "2017-12-02T00:00:00.000Z",
"closeDate": "2017-12-04T00:00:00.000Z",
"openDates": ["2017-12-02T00:00:00.000Z",
"2017-12-03T00:00:00.000Z"]
},
{
"id": "3",
"openDate": "2017-12-02T00:00:00.000Z",
"closeDate": "2017-12-06T00:00:00.000Z",
"openDates": ["2017-12-02T00:00:00.000Z",
"2017-12-03T00:00:00.000Z",
"2017-12-04T00:00:00.000Z",
"2017-12-05T00:00:00.000Z"]
}
은 그 때 나는 이런면 쿼리를 실행할 수 있습니다
/select?q=*:*&facet=true&facet.field=openDates&rows=0
내가 필요로하는 수를 얻을 수 있습니다.
Solr에서 이것을 해결하는 더 좋은 방법이 있습니까?
이상적으로 대체 접근법은 일뿐만 아니라 시간 또는 분 단위로 버킷을 도울 수 있습니다. 위의 방법은 좀 더 세분화하면 매우 큰 다중 값 필드를 갖게됩니다. 또한 제로 카운트로 구멍 (예 : 누락 날짜)을 채우는 좋은 방법이 있습니까?