2012-12-13 29 views
5

Có thể tăng các tài liệu gần đây trong truy vấn RavenDB không?Làm cách nào để bạn có thể tăng tài liệu bằng lần truy cập gần đây trong RavenDB?

This question is exactly what I want to do nhưng đề cập đến Lucene gốc, không phải RavenDB.

Ví dụ, nếu tôi có một tài liệu như thế này

public class Document 
{ 
    public string Title { get; set; } 
    public DateTime DateCreated { get; set; } 
} 

Làm thế nào tôi có thể nâng cao tài liệu người ngày là được gần gũi hơn với một ngày nhất định, ví dụ DateTime.UtcNow?

Tôi không muốn OrderByDecending(x => x.DateCreated) vì có các thông số tìm kiếm khác cần phải ảnh hưởng đến kết quả.

Trả lời

6

Bạn có thể tăng tốc khi lập chỉ mục, nó đã ở trong RavenDB trong một thời gian, nhưng nó không có trong tài liệu. Tuy nhiên, có một số xét nghiệm đơn vị minh họa here.

Các thử nghiệm đó hiển thị một giá trị tăng duy nhất, nhưng nó có thể dễ dàng được tính toán từ các giá trị tài liệu khác thay thế. Bạn có toàn bộ tài liệu có sẵn cho bạn vì điều này được thực hiện khi các mục nhập chỉ mục được viết. Bạn sẽ có thể kết hợp điều này với kỹ thuật được mô tả trong bài đăng mà bạn đã tham chiếu.

Map = docs => from doc in docs 
       select new 
       { 
        Title = doc.Title.Boost(doc.DateCreated.Ticks/1000000f) 
       }; 

Bạn cũng có thể thúc đẩy toàn bộ tài liệu thay vì chỉ các lĩnh vực Tiêu đề, mà có thể hữu ích nếu bạn có các lĩnh vực khác trong thuật toán tìm kiếm của bạn:

Map = docs => from doc in docs 
       select new 
       { 
        doc.Title 
       }.Boost(doc.DateCreated.Ticks/1000000f); 

Bạn có thể cần phải thử nghiệm với quyền giá trị để sử dụng cho số tiền tăng. Có 10.000 ve trong một phần nghìn giây, vì vậy đó là lý do tại sao tôi chia cho một số lượng lớn như vậy.

Ngoài ra, hãy cẩn thận rằng DateTime bạn đang làm việc với trong UTC hoặc nếu bạn không kiểm soát được vị trí của nó, hãy sử dụng DateTimeOffset để thay thế. Tại sao? Vì bạn đang sử dụng thời lượng được tính từ một số điểm tham chiếu và bạn không muốn kết quả không rõ ràng cho các múi giờ khác nhau hoặc quanh các thay đổi về thời gian tiết kiệm ánh sáng ban ngày.

+0

cảm ơn liên kết tới tài liệu quảng bá, nhưng bạn sẽ tăng cường bằng cách nào? Tôi đã cập nhật câu hỏi của mình một chút để hy vọng làm rõ. –

+0

Cảm ơn bạn đã làm rõ. Hãy để tôi suy nghĩ về điều này một chút. Có thể sử dụng một số hương vị quạ của kỹ thuật được mô tả trong bài đăng bạn đã liên kết. –

+0

Đã cập nhật câu trả lời. Tôi hy vọng điều này mang lại kết quả bạn đang tìm kiếm! –