2016-07-06 7 views
5

में -query_filter के रूप में पारित होने पर अमान्य मान ऑपरेटर '<' (कम से कम) संकेत, मैं एक डेटाबेस से दूसरे डेटाबेस में सामग्री की प्रतिलिपि बनाने के लिए एमएलसीपी (मार्कलॉगिक सामग्री पंप) का उपयोग कर रहा हूं। सीटीएस का एक सेट की एक्सएमएल धारावाहिक फ़ॉर्मेट में क्वेरी: इस में मैं उपयोग कर रहा हूँ -query_filter विकल्प और अपने मूल्य एक सीटीएस है तत्व दूरी क्वेरी सीटीएस में लिपटे: और क्वेरी:एमएलसीपी

<cts:and-query xmlns:cts="http://marklogic.com/cts"> 
    <cts:element-range-query operator=">"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2000-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
    <cts:element-range-query operator="&lt;"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2016-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
</cts:and-query> 

अब , उपर्युक्त क्वेरी एमएल क्यूकनसोल पर निष्पादित होने पर वैध परिणाम देता है, लेकिन जब एमएलसीपी के -query_filter विकल्प में पास किया जाता है, तो यह 'अवैध विशेषता मान वर्ण' < ' कहने में त्रुटि देता है।

मार्कलॉगिक और एमएलसीपी का संस्करण 8.0-5 है।

इस में

आगे खुदाई पर मैंने देखा कि समस्या केवल तब होता है जब ऑपरेटर मूल्य से '<'

नोट कम है: मैं तत्व के लिए डेटाबेस पर किसी मान्य श्रेणी सूचकांक कॉन्फ़िगर किया है "रिलीज-ऑन"

उत्तर

1

MarkLogic क्योंकि विशेष वर्ण कमांड लाइन पर अंतर्निहित ओएस द्वारा व्याख्या की जा सकती है, जब एक्सएमएल के रूप में श्रृंखलाबद्ध एक सीटीएस क्वेरी का उपयोग कर विकल्प फ़ाइलों के उपयोग को प्रोत्साहित।

मेरा पहला अनुमान एक फ़ाइल, कहते हैं, सामग्री के साथ options.txt बनाने की कोशिश करना होगा:

--query_filter 
<cts:and-query xmlns:cts="http://marklogic.com/cts"> 
    <cts:element-range-query operator=">"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2000-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
    <cts:element-range-query operator="&lt;"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2016-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
</cts:and-query> 

(आप हालांकि उस फ़ाइल की एक ही लाइन पर सभी एक्सएमएल फिट बनाने के लिए हो सकता है)

और फिर MLCP आह्वान के साथ

mlcp.sh -options_file options.txt ...

+0

यह वही है जो मैं वर्तमान में कर रहा हूं। सभी संबंधित विकल्प एक विकल्प.txt फ़ाइल में लपेटे गए हैं और मैं ऊपर वर्णित वही आदेश निष्पादित कर रहा हूं। –

+0

मैं देखता हूं। यह वास्तव में अजीब लगता है, क्योंकि एक्सएमएल अच्छी तरह से गठित है। अगर कहीं कहीं एक बग है और "<" पाइपलाइन में बहुत जल्दी "<" हो जाता है, तो मुझे कुछ याद आया: क्या आपने "& लेफ्टिनेंट" की कोशिश की है? इसके बजाय "<"? –

+0

मैंने '& लेफ्टिनेंट' का उपयोग करने की कोशिश की; साथ ही साथ एक ही त्रुटि मिली –