Hi Hans, If you use range queries then you need to create required indexes manually/via script. As mention in my previous email, create range indexes on elements "j", "k", "d" and "f" to make it work by going Configure-->databases>yourdatabase-->Element range indexes.
Please refer https://docs.marklogic.com/guide/admin/range_index for more information. For your question regarding universal indexing, XPath and cts queries, please refer https://developer.marklogic.com/pubs/architecture/inside-marklogic-server-r7.pdf Hope that helps! Regards, Indy On Thu, Jun 23, 2016 at 12:03 PM, Hans Hübner <[email protected]> wrote: > Indy, > > thank you for your suggestion! If I understand you correctly, the way to > go about is to build up a query manually rather than asking MarkLogic to > figure out a query plan based on the XPath provided? > > I have tried your solution, but it seems that some manual indexing is > required to make it work (which is also mentioned in the documentation for > cts:element-values): > > [1.0-ml] XDMP-ELEMRIDXNOTFOUND: cts:element-values(fn:QName("","k"), (), > (), cts:and-query((cts:document-query("file1.xml"), > cts:element-value-query(fn:QName("","j"), "123", ("lang=en"), 1)), ())) -- > No element range index for k http://marklogic.com/collation/ > > I will work myself from here, but any suggestion as to how to solve this > or what other approaches exist would be greatly appreciated! > > Thanks, > Hans > > On Thu, Jun 23, 2016 at 7:42 AM, Indrajeet Verma < > [email protected]> wrote: > >> Hi Hans, >> >> You might try below code and see if that helps in improving the >> performance. You need to create range indexes on elements "j", "k", "d" and >> "f". >> >> BTW what values the elements "k" and "f" does contain? Is it numeric, >> string or sentences ? If it contains para/sentences then you should think >> some different way. >> >> let $q1 := cts:and-query((cts:document-query("file1.xml"), >> cts:element-range-query(xs:QName("j"), '=','123'))) >> for $key in cts:element-values(xs:QName("k"), (), (), $q1) >> let $q2 := cts:and-query((cts:document-query("file2.xml"), >> cts:element-range-query(xs:QName("d"), '=',$key))) >> let $data-from-file-2 := cts:element-values(xs:QName("f"), (), (), $q2) >> return >> <pre> >> $key => $data-from-file-2 >> </pre> >> >> >> Regards, >> Indy >> >> On Thu, Jun 23, 2016 at 10:23 AM, Hans Hübner < >> [email protected]> wrote: >> >>> Hi, >>> >>> I have a beginner's question regarding indexing: As far as I >>> understand, MarkLogic indexes all data according to global indexing rules. >>> Thus, in general, all accesses to data should be "fast" when the universal >>> index can be used. >>> >>> I am trying to combine data from two XML files into a report, and >>> throughput is not sufficient. I'm now looking for ways to improve the >>> performance of my XQuery, either by adding indexes to MarkLogic or by >>> improving the query so that it runs faster. Here's what I have: >>> >>> for $key in doc("file1.xml")/a/b/c/d/e/f/g/h/i[j = 123]/k/text() >>> let $data-from-file-2 := doc("file2.xml")/a/b[c/d = $key]/e/f/text() >>> return >>> <pre> >>> $key => $data-from-file-2 >>> </pre> >>> >>> Thus, I'm iterating over some subset of the nodes in file1.xml, >>> selecting data from file2.xml for each of the nodes selected. Both >>> file1.xml and file2.xml are in a files residing in MarkLogic. They have a >>> pre-determined format and contain roughly 100,000 elements matching each of >>> the two paths. >>> >>> It seems that the performance of the second of the two XPaths >>> (doc("file2.xml")/a/b[c/d = $key]/e/f/text()) is most important. Ideally, >>> I would like this lookup to complete in under a millisecond, but it seems >>> to need 75ms right now. >>> >>> Any help speeding this up would be greatly appreciated! >>> >>> Thanks, >>> Hans >>> >>> -- >>> LambdaWerk GmbH >>> Oranienburger Straße 87/89 >>> 10178 Berlin >>> Phone: +49 30 555 7335 0 >>> Fax: +49 30 555 7335 99 >>> >>> HRB 169991 B Amtsgericht Charlottenburg >>> USt-ID: DE301399951 >>> Geschäftsführer: Hans Hübner >>> >>> http://lambdawerk.com/ >>> >>> >>> >>> _______________________________________________ >>> General mailing list >>> [email protected] >>> Manage your subscription at: >>> http://developer.marklogic.com/mailman/listinfo/general >>> >>> >> >> _______________________________________________ >> General mailing list >> [email protected] >> Manage your subscription at: >> http://developer.marklogic.com/mailman/listinfo/general >> >> > > > -- > LambdaWerk GmbH > Oranienburger Straße 87/89 > 10178 Berlin > Phone: +49 30 555 7335 0 > Fax: +49 30 555 7335 99 > > HRB 169991 B Amtsgericht Charlottenburg > USt-ID: DE301399951 > Geschäftsführer: Hans Hübner > > http://lambdawerk.com/ > > > > _______________________________________________ > General mailing list > [email protected] > Manage your subscription at: > http://developer.marklogic.com/mailman/listinfo/general > >
_______________________________________________ General mailing list [email protected] Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general
