2017-04-25 73 views
0

可以說我有一個日誌有關打開吧:Solr的,時間之間搜索,忽略日期

{ 
    opened:  '2013-11-05T00:00:00Z', 
    opened_start: '2013-11-05T12:00:00Z', 
    opened_end: '2013-11-05T14:00:00Z', 
}, 
{ 
    opened:  '2013-15-05T00:00:00Z', 
    opened_start: '2013-15-05T11:00:00Z', 
    opened_end: '2013-15-05T13:00:00Z', 
}, 
{ 
    opened:  '2013-11-05T00:00:00Z', 
    opened_start: '2013-11-05T18:00:00Z', 
    opened_end: '2013-11-05T19:00:00Z', 
}, 
{ 
    opened:  '2013-11-12T00:00:00Z', 
    opened_start: '2013-11-12T02:00:00Z', 
    opened_end: '2013-11-12T14:00:00Z', 
} 

現在我只需要和00​​:00:00之間06:00:00打開吧。我沒有對結構的影響,但它基本上建立這樣的:

{ 
    opened:  'YMD000', 
    opened_start: 'YMD02:00:00Z', 
    opened_end: 'YMD14:00:00Z', 
} 

編輯:我在想從其減去的:opened_start - 打開,所以我只能得到次:0000-00-00 02:00:00

回答

0

這是問昨天:Solr, search only by time among datetime fields?

最好的和最容易的事是隻添加一個字段,並添加適當的格式開幕還有的時候是很容易的可查詢,以下任一將工作:

  1. 只是追加所有的時間數字,如:T13:00:00Z ==> 130000
  2. 使用的秒/分鐘數自午夜
  3. 使用的秒/分鐘數,因爲X的即時(如2013-11-01T00 :00:00Z)那就是你絕對的基準時間

現在,如果你不控制客戶端,你需要從solr裏面添加字段,最簡單的方法就是用copyField(見上面的鏈接),或與UpdateRequestProcessor(更多的工作,不值得)。

1

您可以在XY空間中表示您的酒吧開放範圍作爲XY空間中的座標,開放時間爲X,關閉時間爲Y.然後,您可以使用範圍數學來查找Hoss's presentation的重疊。

您可以使用自定義UpdateRequestProcessor鏈來操縱日期以將其轉換爲該格式。我想你可能只需要提取一小時,因爲這是你的粒度。