2012-12-13 9 views
5

क्या रावेनडीबी क्वेरी में हाल के दस्तावेज़ों को बढ़ावा देना संभव है?आप RavenDB में रिकेंसी द्वारा दस्तावेज़ कैसे बढ़ा सकते हैं?

This question is exactly what I want to do लेकिन मूल लुसीन को संदर्भित करता है, न कि RavenDB।

उदाहरण के लिए

, अगर मैं इस

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

मैं दस्तावेज़ों को कैसे बढ़ा सकते हैं जो तारीख है जैसे एक दस्तावेज़ है कि किसी निश्चित तिथि के करीब हैं, उदा DateTime.UtcNow?

मैं OrderByDecending(x => x.DateCreated) नहीं चाहता क्योंकि अन्य खोज पैरामीटर हैं जो परिणामों को प्रभावित करने की आवश्यकता है।

उत्तर

6

आप अनुक्रमण के दौरान बढ़ावा दे सकते हैं, यह कुछ समय के लिए रावेनडीबी में रहा है, लेकिन यह दस्तावेज़ीकरण में नहीं है। हालांकि, कुछ यूनिट परीक्षण हैं जो here को चित्रित करते हैं।

वे परीक्षण एक एकल बढ़ावा मूल्य दिखाते हैं, लेकिन इसकी बजाय आसानी से अन्य दस्तावेज़ मानों से गणना की जा सकती है। आपके पास पूरा दस्तावेज़ उपलब्ध है क्योंकि यह तब किया जाता है जब इंडेक्स प्रविष्टियां लिखी जाती हैं। आपको उस संदर्भ में वर्णित तकनीक के साथ इसे संयोजित करने में सक्षम होना चाहिए।

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

तुम भी अगर आप अपने खोज एल्गोरिदम में अन्य क्षेत्रों है जो उपयोगी हो सकता है के बजाय सिर्फ शीर्षक फ़ील्ड के पूरे दस्तावेज, को बढ़ावा देने के कर सकते हैं:

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

आप सही के साथ प्रयोग करने की आवश्यकता हो सकती बढ़ावा राशि के लिए उपयोग करने के लिए मूल्य। मिलीसेकंड में 10,000 टिक हैं, इसलिए मैं इतनी बड़ी संख्या से विभाजित हूं।

साथ ही, सावधान रहें कि DateTime आप यूटीसी में काम कर रहे हैं, या यदि आपके पास यह कहां से नियंत्रण नहीं है, तो इसके बजाय DateTimeOffset का उपयोग करें। क्यूं कर? चूंकि आप कुछ संदर्भ बिंदु से गणना की अवधि का उपयोग कर रहे हैं और आप नहीं चाहते हैं कि परिणाम विभिन्न समय क्षेत्रों या डेलाइट बचत समय परिवर्तनों के आसपास अस्पष्ट हो।

+0

बूस्टिंग दस्तावेज़ों के लिंक के लिए धन्यवाद, लेकिन आप पुनरावृत्ति से कैसे बढ़ेंगे? मैंने आशा व्यक्त करने के लिए थोड़ा सा सवाल उठाया है। स्पष्टीकरण के लिए –

+0

धन्यवाद। मुझे इस बारे में थोड़ा सा सोचने दो। आपके द्वारा लिंक किए गए पोस्ट में वर्णित तकनीक के कुछ रेवेन स्वाद का उपयोग करना संभव होना चाहिए। –

+0

उत्तर अपडेट किया गया। मुझे आशा है कि यह परिणाम आपको मिलेगा जिसके परिणामस्वरूप आप खोज रहे हैं! –

संबंधित मुद्दे