1.4.2 solr字段類型--(1.4.2.4)使用Dates(日期)


1.4.2 solr字段類型

  (1.4.2.1) 字段類型定義和字段類型屬性.

  (1.4.2.2) solr附帶的字段類型

  (1.4.2.3) 使用貨幣和匯率

  (1.4.2.4) 使用Dates(日期)

  (1.4.2.5) 使用枚舉字段

  (1.4.2.6) 使用外部文件和程序

  (1.4.2.7) 字段屬性使用案例

 

使用Dates(日期)

日期格式

  solr的TrieDateField(DateField已經棄用)字段類型,表示精確到毫秒的時間點.在XML Schema 規范中所使用的格式是一個嚴格的日期事件的規范表示格式.

  YYYY-MM-DDThh:mm:ssZ:

    YYYY:年

    MM:月

    DD:日

    hh:24進制小時

    mm:分鍾

    ss:秒

    Z:表示UTC時間

  注意:沒有時區可以指定,這個日期字符串一般表示UTC時間.這里有一個例子:

  1972-05-20T17:33:18Z

  你可以選擇加入部分小數,不允許在末尾加0,任何精確度超出毫秒的均被忽略掉:

  1972-05-20T17:33:18.772Z
  1972-05-20T17:33:18.77Z
  1972-05-20T17:33:18.7Z

Date的數學運算

  solr的日期字段類型同樣支持日期的數學運算表達式,這使它很容易的及時創建時間相對於固定的時刻而言,當前時間可以用"NOW"來表示:

日期數學運算語法

  日期表達式可以添加一些指定單位的時間數字,也可以對當前時間通過指定的單位來四舍五入.表達式可以鏈式的,從左到右執行.斜杠"/"表示四舍五入.

 例子:

  表示兩個月之后的當前時間點:NOW+2MONTHS

  表示一天以前的時間點:NOW-1DAY

  表示當前小時開始:NOW/HOUR

  下面計算(精確到毫秒)未來6個月又3天的時間點,然后四舍五入時間到天(day):

  NOW+6MONTHS+3DAYS/DAY

  混合方式:1972-05-20T17:33:18.772Z+6MONTHS+3DAYS/DAY

請求參數

 NOW

  example:

    q=solr&fq=start_date:[* TO NOW]&NOW=1384387200000

 TZ

  默認的,所有日期的數學表達式都是相對於UTC時區來評估的.TZ屬性可以指定時區.來覆蓋默認的UTC時區.

  例如,這個請求對當前月的每一天使用分面范圍查詢,時區為UTC.

http://localhost:8983/solr/select?q=*:*&facet.range=my_date_field&facet=true
&facet.range.start=NOW/MONTH&facet.range.end=NOW/MONTH%2B1MONTH&facet.range.gap=%2B1DAY

 

  結果:

<int name="2013-11-01T00:00:00Z">0</int>
<int name="2013-11-02T00:00:00Z">0</int>
<int name="2013-11-03T00:00:00Z">0</int>
<int name="2013-11-04T00:00:00Z">0</int>
<int name="2013-11-05T00:00:00Z">0</int>
<int name="2013-11-06T00:00:00Z">0</int>
<int name="2013-11-07T00:00:00Z">0</int>

 

  指定時區:

http://localhost:8983/solr/select?q=*:*&facet.range=my_date_field&facet=true
&facet.range.start=NOW/MONTH&facet.range.end=NOW/MONTH%2B1MONTH&facet.range.gap=%2B1DAY
&TZ=America/Los_Angeles

 

結果:

<int name="2013-11-01T07:00:00Z">0</int>
<int name="2013-11-02T07:00:00Z">0</int>
<int name="2013-11-03T07:00:00Z">0</int>
<int name="2013-11-04T08:00:00Z">0</int>
<int name="2013-11-05T08:00:00Z">0</int>
<int name="2013-11-06T08:00:00Z">0</int>
<int name="2013-11-07T08:00:00Z">0</int>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM