Each conceptDef is a fragment (its parent, terminology is a fragment Root)
I rewrote it as this :
doc("/NDFRT/NDFRT_Public_2009.05.12_TDE.xml")/terminology/conceptDef[empty(definingConcepts/concept)]
But it didnt speed things up much.
My guess is that the non-existance of elements is not indexed. I would think
there would be some way in ML to index that information but I cant find it.
Instead what I did was pre-process the XML file to generate a 'tree structure'
of the elements containing just the id's.
Like
<concept id="1">
<concept id="2">
<concept id="3"/>
<concept id="4"/>
</concept>
</concept>
</concept>
This tree xml is 4MB instead of 50MB and processing through it to find out what
things have child elements is almost instant.
Then I cross reference back to the main XML using the id and thats instant as
well.
SO while this isnt blocking me, I'm curious. Is there a way to tell ML to
index the non existence of elements or attributes ? I would think thats a very
common search. I tried searching for word matches with the empty text but that
didnt work.
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Danny Sokolsky
Sent: Thursday, November 19, 2009 12:02 PM
To: General Mark Logic Developer Discussion
Subject: RE: [MarkLogic Dev General] search for non-existing elements
The FLOWR is not likely to make it faster, as it has to do the same amount of
work.
I think you said that conceptDef is a fragment root, is that right?
//conceptDef looks for all conceptDef elements at all levels of the tree. If
you know the path to your conceptDef elements, that might help, as it will only
need to look where you tell it. For example:
doc("/NDFRT/NDFRT_Public_2009.05.12_TDE.xml")/foo/bar/conceptDef
[empty(definingConcepts/concept)]
If you know something more about the content of definingConcepts, you might be
able to do something clever in your test as well.
-Danny
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Andrew Welch
Sent: Thursday, November 19, 2009 8:40 AM
To: General Mark Logic Developer Discussion
Subject: Re: [MarkLogic Dev General] search for non-existing elements
> doc("/NDFRT/NDFRT_Public_2009.05.12_TDE.xml")//conceptDef[empty(definingConcepts/concept)]
> This is taking about 10 seconds right now.
> Any suggestions ? Thanks !
...just a suggestion, but try rewriting it as a flowr expression, such as:
for $c in //conceptDef
where fn:empty($c/definingConcepts/concept)
return $c
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general