2011-03-01 31 views
5

Nếu tôi đã xác định một trường loại Solr.DateField, tôi đọc SOLR luôn lưu nó trong GMT. Nhưng tôi thấy rằng SOLR chỉ mất thời gian được định nghĩa trong DB của tôi và viết nó mà không cần chuyển đổi.Solr không tiết kiệm thời gian ở định dạng UTC

Có thông số cấu hình nào cho nó không?

Trả lời

0

Theo như tôi biết Solr lưu trữ ngày chính xác khi bạn cấp dữ liệu, hãy bỏ qua bất kỳ thông tin múi giờ nào. Bạn có thể chuyển đổi từ/sang UTC. Here's a forum thread that confirms this.

Ví dụ: here are some conversion routines for PHP.

+0

Tôi có một máy nơi solr thực hiện chuyển đổi này tự động nhưng nó không xảy ra khi cùng một mã được chạy trên một máy khác, nơi chính máy đó được đặt thành GMT. http://lucene.472066.n3.nabble.com/SOLR-1-4-1-Indexing-DateField-time-zone-problem-td1966118.html giải thích một số điều đó. – Prasanna

+0

@Mauricio Scheffer Tôi không chắc chắn, nếu tôi hiểu bạn đúng. Nó có nghĩa là, solr đó diễn giải tất cả các ngày như UTC. Vì vậy, nó là để các nhà phát triển để nuôi solr với ngày UTC chỉ? Điều này có nghĩa: tôi phải chuyển đổi ngày trước khi gửi đến solr và '2012-12-13T14: 42: 16.437Z + 01: 00' (với' +01: 00') không hoạt động ?! Bạn có biết, nếu có bất kỳ thay đổi nào trong Solr 4? –

0

Ok tôi phát hiện ra rằng ngày tôi đưa ra cho SOLR không có múi giờ được đặt trong nó và trong trường hợp này nó mặc định là bất kỳ múi giờ nào máy được đặt thành.

5

Theo như tôi biết DateFormat Solr CHỈ sẽ chấp nhận là:

YYYY-MM-DDThh: mm: SS.000Z (! Z là quan trọng)

+4

"Z" là từ "Thời gian Zulu" hoặc "Thời gian không", là GMT = 0 (hoặc UTC = 0) – Topera

+1

Cảm ơn bạn, cơ hội để bạn biết tại sao? Trong tài liệu, họ nói rằng họ chấp nhận ngày theo định dạng ISO, nhưng tôi đã không tìm thấy một tham chiếu trong đó chúng ta nên ép buộc represention đến GMT (kết thúc bằng Z) –

0

trong trường hợp của tôi, máy chủ của chúng tôi là đặt thành thời gian không UTC. khi solr lấy một hàng từ cơ sở dữ liệu, nó sẽ tự động chuyển đổi thời gian đó thành UTC.

vấn đề là dữ liệu được lưu trữ trong DB đã có trong UTC. nhưng vì khi solr kéo dữ liệu đó, nó thực hiện một chuyển đổi khác sang UTC ....

đúng cách cho mục đích của chúng tôi (theo ý kiến ​​của tôi) là đặt máy chủ thành múi giờ UTC ... nhưng than ôi, điều đó sẽ lộn xộn toàn bộ máy chủ trang trại ... tôi không làm ops, và tôi không biết các chi nhánh. trong mọi trường hợp, tôi đang cố tìm cách giải quyết vấn đề này trong mã của mình.

1

Như Mauricio Scheffer khẳng định, SOLR không quan tâm đến múi giờ, điều này thật khó chịu.

NHƯNG! Nếu bạn có thời gian không phải là UTC bạn biết múi giờ khi bạn lập chỉ mục giá trị, bạn có thể chuyển đổi múi giờ thành UTC khi đang chạy trong bản cập nhật SOLR của bạn:

"2013-02-07T11: 21: 51Z + 8HOUR "

Điều này có vẻ hơi lạ, nhưng thêm" Z + 8HOUR "vào dấu thời gian PST sẽ chuyển đổi giá trị đó thành giá trị đúng trong UTC. Nói chung, bạn có thể sử dụng bất kỳ công cụ sửa đổi DateMath nào khi lập chỉ mục một dấu thời gian.

Các vấn đề liên quan