2010-06-07 103 views
3

日期範圍包括BC日期是可能的嗎?SOLR日期刻面和BC/BCE日期/負日期範圍

我想使用SOLR返回公元前11000年(公元前)和公元前9000年(公元前)之間所有年份的刻面。

示例查詢可能與轉換爲ISO 8601的日期範圍:

q=*:*&facet.date=myfield_earliestDate&facet.date.end=-92009-01-01T00:00:00&facet.date.gap=%2B1000YEAR&facet.date.other=all&facet=on&f.myfield_earliestDate.facet.date.start=-112009-01-01T00:00:00 

但是返回的結果似乎表明,日期是在積極的範圍,即CE,不是BCE ...

看樣返回的結果

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">6</int> 
<lst name="params"> 
<str name="f.vra.work.creation.earliestDate.facet.date.start">-112009-01-01T00:00:00Z</str> 
<str name="facet">on</str> 
<str name="q">*:*</str> 
<str name="facet.date">vra.work.creation.earliestDate</str> 
<str name="facet.date.gap">+1000YEAR</str> 
<str name="facet.date.other">all</str> 
<str name="facet.date.end">-92009-01-01T00:00:00Z</str> 
</lst> 
</lst> 
<result name="response" numFound="9556" start="0">ommitted</result> 
<lst name="facet_counts"> 
<lst name="facet_queries"/> 
<lst name="facet_fields"/> 
<lst name="facet_dates"> 
<lst name="vra.work.creation.earliestDate"> 
<int name="112010-01-01T00:00:00Z">0</int> 
<int name="111010-01-01T00:00:00Z">0</int> 
<int name="110010-01-01T00:00:00Z">0</int> 
<int name="109010-01-01T00:00:00Z">0</int> 
<int name="108010-01-01T00:00:00Z">0</int> 
<int name="107010-01-01T00:00:00Z">0</int> 
<int name="106010-01-01T00:00:00Z">0</int> 
<int name="105010-01-01T00:00:00Z">0</int> 
<int name="104010-01-01T00:00:00Z">0</int> 
<int name="103010-01-01T00:00:00Z">0</int> 
<int name="102010-01-01T00:00:00Z">0</int> 
<int name="101010-01-01T00:00:00Z">0</int> 
<int name="100010-01-01T00:00:00Z">5781</int> 
<int name="99010-01-01T00:00:00Z">0</int> 
<int name="98010-01-01T00:00:00Z">0</int> 
<int name="97010-01-01T00:00:00Z">0</int> 
<int name="96010-01-01T00:00:00Z">0</int> 
<int name="95010-01-01T00:00:00Z">0</int> 
<int name="94010-01-01T00:00:00Z">0</int> 
<int name="93010-01-01T00:00:00Z">0</int> 
<str name="gap">+1000YEAR</str> 
<date name="end">92010-01-01T00:00:00Z</date> 
<int name="before">224</int> 
<int name="after">0</int> 
<int name="between">5690</int> 
</lst> 
</lst> 
</lst> 
</response> 

任何想法,爲什麼是這樣的話,可以SOLR處理負的日期,如-112009-01-01T00:00:00Z?

回答

1

我不認爲這是完全支持。至少在source codetests中沒有明確提及BC日期。

我甚至嘗試使用date math,e.g定義BC年:

facet.date.start: NOW-11000YEARS 
facet.date.end: NOW 
facet.date.gap: +1000YEAR 

並得到了一些怪異的結果:在秒後

<int name="8991-06-07T20:30:45-.666Z">0</int> 
<int name="7991-06-07T20:30:45-.666Z">0</int> 
<int name="6991-06-07T20:30:45-.666Z">0</int> 
<int name="5991-06-07T20:30:45-.666Z">0</int> 
<int name="4991-06-07T20:30:45-.666Z">0</int> 
<int name="3991-06-07T20:30:45-.666Z">0</int> 
<int name="2991-06-07T20:30:45-.666Z">0</int> 
<int name="1991-06-07T20:30:45-.666Z">0</int> 
<int name="0991-06-07T20:30:45-.666Z">0</int> 
<int name="0010-06-07T20:30:45-.666Z">0</int> 
<int name="1010-06-07T20:30:45-.666Z">1435</int> 

注意-。看起來像是一個bug ...

+0

我可以用'-'來確認與日期數學組成的查詢相同的問題,以及iso 8601(負)日期的問題,如「-112009-01-01T00 :00:00Z」。我將很快發佈在Apache Jira上。感謝您的確認。 在旁註中選擇從日期範圍查詢返回的構面時,facet查詢(如fq = dateFieldName:2009-01-01T00:00:00Z)仍然適用? – 2010-06-08 21:48:25