2016-01-12 5 views

उत्तर

6

आप शायद xdmp:eval, जिससे आपके सामने विकल्प तर्क स्वीकार करता है का उपयोग करने की आवश्यकता होगी, और वहाँ में आप डेटाबेस निर्दिष्ट कर सकते हैं: हालांकि निम्नतम स्तर पर, xdmp

xdmp:eval("cts:search(...)", (), 
    <options xmlns="xdmp:eval"> 
    <database>{xdmp:database("otherdb")}</database> 
    </options>) 
+1

यह न केवल एक अच्छा जवाब है, लेकिन यह शायद ही सही एक है। यह निर्दिष्ट करने के आपके एकमात्र विकल्प कि कौन सी डीबी पूछताछ करने के लिए, मुझे पता है: 'xdmp: eval' family,' xdmp: परिवार को आमंत्रित करें, और 'xdmp: spawn' परिवार। – CtheGood

2

: eval, सबसे वास्तव में क्या होता है स्वच्छ विकल्प जो इनलाइन लिखने के लिए शायद सबसे आसान है xdmp:invoke-function - और इसके अलावा एक अज्ञात फ़ंक्शन का भी उपयोग करना बेहतर हो सकता है। यह संयोजन मौजूदा चर के प्राकृतिक उपयोग के लिए अनुमति देता है। आप आगे जाना चाहते हैं, तो भी xdmp को देखो: (अधिक flexability जोड़ने के लिए)

इसके अलावा, MarkLogic 8 में लागू होते हैं, वहाँ एक नया लेन-देन प्रकार कहा जाता अद्यतन-ऑटो के लिए प्रतिबद्ध है जो भी यह अच्छा बनाता है और परिणामों की प्रतीक्षा करते समय एक फ़ंक्शन इनलाइन का आह्वान करने के लिए साफ़ करें (कोई स्पॉन नहीं) और इसे अपने लेनदेन में रखें। ठीक से प्रयुक्त होता है, फिर अपडेट/डालने के परिणाम कॉलिंग कोड में भी उपलब्ध होते हैं। एक और डेटाबेस के खिलाफ खोज और स्वाभाविक रूप से मुख्य कोड में चर का उपयोग करता है:

नीचे कोड नमूना लागू होता है सीटीएस

xquery version "1.0-ml"; 
declare namespace html = "http://www.w3.org/1999/xhtml"; 

let $query := cts:word-query("foo") 
let $start := 1 
let $end := 3 
let $database-name := "your-other-database-name-here" 

return 
    xdmp:invoke-function(
     function() { 
      cts:search(doc(), $query)[$start to $end]   
     }, 
     <options xmlns="xdmp:eval"> 
     <database>{xdmp:database($database-name)}</database> 
     </options>) 
संबंधित मुद्दे