2011-05-06 2 views
1

저는 Solr을 속성 예약 엔진의 일부로 사용하고 있습니다. 내 항목에는 속성이 이미 예약되어 있으므로 사용할 수없는 날짜를 저장하는 다중 값 날짜 필드가 있습니다. 이 질문에 대해 쿼리 할 수 ​​있고 지정한 창 내에 날짜가없는 항목을 반환 할 수 싶습니다.Solr- 다중 값 날짜 필드, "any"/ "count"와 일치하는 범위 쿼리?

반쯤 있습니다.하지만 Solr은 무료 날짜가 하나라도있는 경우 항목을 반환하는 것으로 보입니다. 범위 내에서 인 항목 만 반환하고 싶습니다. 범위 내에서이 비어 있습니다. 내 개체의 예 :

<doc> 
    <arr name="DateBlockDates"> 
     <date>2011-02-25T00:00:00Z</date> 
     <date>2011-02-26T00:00:00Z</date> 
     <date>2011-02-27T00:00:00Z</date> 
    </arr> 
</doc> 

쿼리는이 경우에 좋은 작품 : 기업이 그 시절의 모든 일에 대한 날짜 블록을 가지고

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-27T00:00:00Z] 

때문입니다. 그러나, 나는 실행은 2011-02-28에 대한 항목이 없기 때문에

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-28T00:00:00Z] 

엔티티가 반환됩니다.

제 질문을 구식 SQL에 넣으려면 "count (DateBlockDates) = 0"을 원합니다. 어떤 아이디어?

답변

2

이 내가 날짜 쿼리에 대한 범위를 사용하는 대신 사용하지 뿐인데 왔어요 최고의 솔루션입니다 :

-DateBlockDates:"2011-02-25T00:00:00.000Z" 
AND -DateBlockDates:"2011-02-26T00:00:00.000Z" 
AND -DateBlockDates:"2011-02-27T00:00:00.000Z" 
AND -DateBlockDates:"2011-02-28T00:00:00.000Z" 

그것은 난장판이지만, 그것을 작동합니다. 고맙게도 비교적 작은 날짜 범위를 다루므로 쿼리가 너무 오래 걸리지 않을 것입니다. 그러나 거기에 더 좋은 해결책이 있다면 나는 그것을 듣고 싶어.

+0

안녕 Alastair, 혹시 이것에 대한 더 나은 해결책을 찾았습니까? 나는 여러 datetime 값을 저장하려고하고 그들 위에 날짜 범위 검색을 할 수 있습니다. –

+0

날짜/시간을 UTC (아직 변환하지 않은 경우)로 변환 한 다음 에포크 이후의 초를 나타내는 정수 값으로 변환하십시오. 더 경험적인 날짜 범위 쿼리를 허용해야합니다. – xentek