How about (ignore the bad casing--that's Outlook's autocorrect and I'm too
lazy to go back and correct every line):

Let $docs := collection('/mydir')/*
For $doc in $docs
    Return if (matches(document-uri(root($doc)), '^.+somestring$'))
           Then $doc
           Else ()

Cheers,

Eliot
----
Eliot Kimber, Owner
Contrext, LLC
http://contrext.com




On 8/31/15, 11:35 AM, "Martín Ferrari"
<basex-talk-boun...@mailman.uni-konstanz.de on behalf of
ferrari_mar...@hotmail.com> wrote:

>Hi Mansi,     I have a similar situation. I don't think there's a fast
>way to get documents by only knowing a part of their names. It seems you
>need to know the exact name. In my case, we might be able to group
>documents by a common id, so we might create subfolders inside the DB and
>store/get the contents of the subfolder directly, which is pretty fast.
>     I've also tried indexing, but insertions got really slow (I assume
>maybe because indexing is not granular, it indexes all values) and we
>need performance.
>
>     Oh, I've also tried using starts-with() instead of contains(), but
>it seems it does not pick up indexes.
>
>Martín.
>
>________________________________________
>Date: Fri, 28 Aug 2015 16:52:37 -0400
>From: mansi.sh...@gmail.com
>To: basex-talk@mailman.uni-konstanz.de
>Subject: [basex-talk] Finding document based on filename
>
>Hello, 
>I would be having 100s of databases, with each database having 100 XML
>documents. I want to devise an algorithm, where given a part of XML file
>name, i want to know which database(s) contains it, or null if document
>is not currently present in any database. Based on that, add current
>document into the database. This is to always maintain latest version of
>a document in DB, and remove the older version, while adding newer
>version.
>
>So far, only way I could come up with is:
>
>for $db in all-databases:
>      open $db
>      $fileNames = list $db
>            for eachFileName in $fileNames:
>                   if $eachFileName.contains(sub-xml filename):
>                            add to ret-list-db
>
>return ret-list-db
>
>Above algorithm, seems highly inefficient, Is there any indexing, which
>can be done ? Do you suggest, for each document insert, I should maintain
>a separate XML document, which lists each file inserted etc.
>
>Once, i get hold of above list of db, I would be eventually deleting that
>file and inserting a latest version of that file(which would have same
>sub-xml file name). So, constant updating of this external document also
>seems painful (Map be ?).
>
>Also, would it be faster, using XQUERY script files, thru java code, or
>using Java API for such operations ?
>
>How do you all deal with such operations ?
>
>- Mansi
>
>
>
>
>
>
>                                         


Reply via email to