2012-10-19 27 views
11

Trong Solr tôi có trường ngày (published_date) và giá trị là ở định dạng này "2012-09-26T10: 08: 09.123Z"Làm thế nào để lọc truy vấn trong solr theo ngày?

Làm thế nào tôi có thể tìm kiếm bằng đầu vào đơn giản như "2012/09/10 "thay vì định dạng ngày ISO đầy đủ.

Có thể trong Solr? Tôi đã thử với

fq=[2012-09-24%20TO%20NOW]

Nó phải trả lại bằng cách lọc kết quả lớn hơn so với ngày công bố 2012/09/24 và ít hơn NGAY BÂY GIỜ.

Nhưng nó sẽ trả về dữ liệu với ngày công bố với 2012/09/23, như dưới đây

<float name="score">2.8183863</float> 
<str name="name">Local Team Inspires Obama</str> 
<date name="published_date">2012-09-23T07:44:53.123Z</date> 

Tôi có thiếu cái gì?

cảm ơn trước.

+3

hi. tìm kiếm trên SO, có rất nhiều câu hỏi tương tự với câu trả lời đã sẵn sàng (tôi không nên ... http://stackoverflow.com/search?q=solr+date+query) –

+4

'& fq = published_date: [2012-09- 24T00: 00: 00Z đến 2012-09-24T23: 59: 99.999Z] 'nên thực hiện thủ thuật –

+0

bản sao có thể có của [SOLR: Truy vấn phạm vi có tổng] (http://stackoverflow.com/questions/10603568/solr-range -query-with-sum) – ZyX

Trả lời

25

Nếu bạn muốn nhận được các ấn phẩm tuần trước bạn có thể làm somehting như:

&fq=published_date:[NOW-7DAY/DAY TO NOW] 

Nhưng nếu bạn muốn có một ngày cụ thể bạn phải làm điều đó trong các định dạng ngày Solr:

&fq=published_date:[2013-07-17T00:00:00Z TO NOW] 

tôi hy vọng rằng sẽ giúp

6

Dạng đơn giản nhất của ngày Solr là từ khóa 'NGAY BÂY GIỜ' đề cập đến ngày và giờ hiện tại. Nó phân biệt chữ hoa chữ thường trong Solr, nhưng trình phân tích cú pháp truy vấn Lucid sẽ cho phép nó trong mọi trường hợp. 'NOW' có thể được sử dụng hoặc nếu không có ngày tháng rõ ràng hoặc toán ngày tháng được chỉ định, hoặc nó có thể được sử dụng nếu toán ngày được chỉ định mà không có ngày rõ ràng.

Ngày rõ ràng được viết bằng Solr sử dụng định dạng dựa trên ISO 8601, bao gồm chuỗi có dạng yyyy-mm-ddThh: mm: ss.mmmZ, trong đó 'yyyy' là năm gồm 4 chữ số, 'mm' đầu tiên là tháng có hai chữ số, 'dd' là ngày có hai chữ số, 'T' là chữ cái bắt buộc bằng chữ 'T' để biểu thị thời gian sau, 'hh' là số có hai chữ số (' 00 'đến' 23 '),' mm 'thứ hai là hai chữ số (' 00 'đến' 59 '),' ss 'là hai giây (' 00 'đến' 59 '), tùy chọn' .mmm 'là mili giây ba chữ số trước một dấu chấm, và' Z 'là chữ cái bắt buộc bằng chữ' Z 'để chỉ ra rằng thời gian là UTC (' Zulu '). Phần mili giây, bao gồm cả giai đoạn hàng đầu, là tùy chọn. Các số không bắt buộc không bắt buộc trong mili giây.

For example: 

    2008-01-01T00:00:00Z 

    2008-01-01T00:00:00 

    2008-01-01T00:00 same as [2008-01-01T00:00:00Z TO 2008-01-01T00:00:59Z] 

    2008-01-01T00: same as [2008-01-01T00:00:00Z TO 2008-01-01T00:59:59Z] 

    2008-01-01T same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z] 

    2008-01-01 same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z] 

    2008-01 same as [2008-01-01T00:00:00Z TO 2008-01-31T23:59:59Z] 

    2008 same as [2008-01-01T00:00:00Z TO 2008-12-31T23:59:59Z] 

Tín dụng Solr Documentation

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