2013-08-19 4 views
0

내 목표는 지난 한 달 동안 매달 문서 수를 얻는 것입니다.Solr 1.4 날짜 패싯 포함

q=*:* 
rows=0 
facet=on 
facet.date=myDateField 
facet.date.start=NOW-11MONTH/MONTH 
facet.date.end=NOW+1MONTH/MONTH 
facet.date.gap=+1MONTH 

이 쿼리가 생산하는 범위는 2 개 개의 다른 범위에서 계산되고 매월 1 일에 T00:00:00Z 의미의 상한에 대한 포괄적 인 2013-01-01T00:00:00Z to 2013-02-01T00:00:00Z을,있다 : 여기 SOLR 1.4에 사용하고있는 측면 쿼리입니다 .

Solr 3.1 introduces 내 문제를 해결하는 매개 변수는 facet.date.include입니다. 단, 지금 업그레이드하는 것은 옵션이 아닙니다. 동일한 기능을 수행 할 수있는 해결 방법이 있습니까? 가까이에 있지만 충분히 가깝지 않은 facet.date.gap=+1MONTH-1SECOND을 시도했습니다. 종료일이 올바르지 않은 경우 다음과 같은 결과가 표시됩니다.

2012-09-01T00:00:00Z 
2012-09-30T23:59:59Z 
2012-10-30T23:59:58Z 
2012-11-30T23:59:57Z 
2012-12-30T23:59:56Z 
2013-01-30T23:59:55Z 
2013-02-28T23:59:54Z 
2013-03-28T23:59:53Z 
2013-04-28T23:59:52Z 

답변

0

패싯 범위 대신 패싯 쿼리를 사용하여 수행 할 수 있습니다. 다음과 같이 입력하십시오 :

facet.query=myDateField:[NOW-11MONTH/MONTH TO NOW-10MONTH/MONTH] 
facet.query=myDateField:[NOW-10MONTH/MONTH TO NOW-9MONTH/MONTH] 
facet.query=myDateField:[NOW-9MONTH/MONTH TO NOW-8MONTH/MONTH] ... 

등등.

이제 단일 패싯을 완벽하게 제어 할 수 있으므로 필요한 경우 마지막 패싯에서 -1 일을 수행 할 수 있습니다. 날짜 계산 구문에 대한 참조를 살펴보십시오. http://lucene.apache.org/solr/4_4_0/solr-core/org/apache/solr/util/DateMathParser.html

+0

여전히 다음 달의 첫 번째 날의 상한을 사용하여 범위를 만듭니다. 출력은 원래 날짜 패싯 예제 – schmimd04

+0

과 동일합니다. 마지막 패싯에서 작업해야합니다. 이런 식으로 당신은 그것을 완전히 통제 할 수 있습니다. 다음과 같은 마지막면에 -1 일을 넣으십시오. NOW + 1MONTH-1DAY/MONTH –

+0

아, 이제 알겠습니다. 귀하의 답을 받아 들일 것입니다, 왜냐하면 그것이 효과가있는 것처럼 보이기 때문에, 우리는 다른 길을 선택했습니다. Google은 일시적으로 데이터를 수정하여 매월 1 일 자정 (예 : 2013-08-01T00 : 00 : 01Z) 자정에 추가하여 패싯 범위를 벗어나도록했습니다. 나는 그것이 꽤 큰 해킹 인 것을 안다. 그러나 우리가 Solr을 업그레이드 할 수있을 때까지 우리의 목적을 달성 할 것이다. – schmimd04