That's solved it. The Search time is down to a more manageable amount now.
Thanks
On Wed, Nov 12, 2008 at 3:12 PM, Whitby, Rob, CMG
<[EMAIL PROTECTED]> wrote:
> Yes sorry, you're right. Try adding the unfiltered option, that way it
> will only use the index:
>
> cts:search(
> /doc/classifications/classification,
> cts:element-attribute-value-query(xs:QName("keyword",
> xs:QName("value"), "something"),
> 'unfiltered'
> )
>
>
>
> -----Original Message-----
> From: Steve [mailto:[EMAIL PROTECTED]
> Sent: 12 November 2008 14:54
> To: Whitby, Rob, CMG
> Cc: General Mark Logic Developer Discussion
> Subject: Re: [MarkLogic Dev General] Improving XPath Performance
> onSearchResults
>
> @Rob,
>
> I've tried that suggestion, but won't that just search the paths below
> /doc/classifications/classification ? If you look at the structure of
> the document you can see that the keywords don't exist under the
> classification branch. I've got an attribute range index on
> keyword/@value.
>
> On Wed, Nov 12, 2008 at 2:47 PM, Whitby, Rob, CMG
> <[EMAIL PROTECTED]> wrote:
>> If you put an attribute range index on keyword/@value you can do
>> something like this:
>>
>> cts:search(
>> /doc/classifications/classification,
>> cts:element-attribute-value-query(xs:Qname("keyword",
>> xs:Qname("value"), "something")
>> )
>>
>> (untested!)
>>
>> Rob
>>
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Steve
>> Sent: 12 November 2008 14:41
>> To: James Clippinger
>> Cc: General Mark Logic Developer Discussion
>> Subject: Re: [MarkLogic Dev General] Improving XPath Performance
>> onSearchResults
>>
>> I should probably add that I'm trying to extract all classification
>> values for the documents that have a specific keyword value.
>>
>> On Wed, Nov 12, 2008 at 2:40 PM, Steve <[EMAIL PROTECTED]>
>> wrote:
>>> Thanks for your response.
>>>
>>> I've tried your suggestion and it doesn't really help. Looking at the
>
>>> profiling document, I can see that it's clearly the XPath on the
>>> document results that is slowing the who thing down. Is there any
>>> other ways that I can improve this. I've included a sample document
>>> (small), so you can see what I'm trying to achieve.
>>>
>>> <doc>
>>> <classifications>
>>> <classification value="123" />
>>> <classification value="324" />
>>> </classifications>
>>> <keywords>
>>> <keyword value="word1" />
>>> <keyword value="word2" />
>>>
>>> </keywords>
>>> </doc>
>>>
>>>
>>>
>>> On Wed, Nov 12, 2008 at 2:24 PM, James Clippinger
>>> <[EMAIL PROTECTED]> wrote:
>>>> Steve, your query is doing some heavyweight filtering for the XPath
>>>> because it is doing two steps:
>>>>
>>>> 1) Execute the cts:search(): generate a list of all documents
>>>> matching the query in relevance order.
>>>>
>>>> 2) Execute the XPath: reorder the documents into document order and
>>>> find only those with /doc/classifications/classification elements,
>>>> returning those classification elements.
>>>>
>>>> Since you are using XPath and thus returning results in document
>>>> order, you probably want to use cts:contains() in an XPath predicate
>
>>>> rather than cts:search(). cts:contains() in a rooted XPath
>>>> expression will use the search indexes when appropriate, so it's as
>>>> fast as the equivalent
>>>> cts:search() expression. Try this:
>>>>
>>>> let $search := cts:element-attribute-word-query(fn:QName("",
>>>> "keyword"), fn:QName("", "value"), "something") return
>>>> fn:collection()/doc[cts:contains(.,
>>>> $search)/classifications/classification
>>>>
>>>> James
>>>>
>>>>> -----Original Message-----
>>>>> From: [EMAIL PROTECTED]
>>>>> [mailto:[EMAIL PROTECTED] On Behalf Of Steve
>>>>> Sent: Wednesday, November 12, 2008 8:54 AM
>>>>> To: [email protected]
>>>>> Subject: [MarkLogic Dev General] Improving XPath Performance on
>>>>> SearchResults
>>>>>
>>>>> I've written a query which I use to search my data set and I am
>>>>> able
>>
>>>>> to get the results back very quickly. However the results that I
>>>>> get
>>
>>>>> back show the complete document that the search matched, where as I
>
>>>>> want a particular node returned.
>>>>> At the moment I'm doing this:
>>>>>
>>>>> let $search := cts:element-attribute-word-query(fn:QName("",
>>>>> "keyword"), fn:QName("", "value"), "something") let $results :=
>>>>> cts:search(fn:collection(),
>>>>> $search)/doc/classifications/classification
>>>>> return $results
>>>>>
>>>>> I've tried profiling this query and I've found that there is a big
>>>>> lag filtering the $results of the search using XPath.
>>>>> Is there any way, either through using a different query or search
>>>>> notation, or by indexes etc that I can speed this up.
>>>>>
>>>>> Thanks in advance...
>>>>> _______________________________________________
>>>>> 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