Yes, thank you all very much!

Tim

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Shannon
Sent: Monday, June 01, 2009 4:13 PM
To: General Mark Logic Developer Discussion
Subject: Re: [MarkLogic Dev General] Building cts:searchqueries
withconditional logic

Thanks, Mike and Geert -- then the empty sequence is more efficient;  
Glad to know, since that's what I've been using in my code.

On Jun 1, 2009, at 3:59 PM, Michael Blakeley wrote:

> It's just an extra constructor.
>
> empty( cts:query( () ) )
> => true
>
> However, that can take up valuable cycles:
>
> for $i in 1 to 1000 * 1000
> return cts:query( () )
> , data( xdmp:query-meters()/*[1] )
> => PT0.825918S
>
> for $i in 1 to 1000 * 1000
> return ()
> , data( xdmp:query-meters()/*[1] )
> => PT0.509286S
>
> Still, it's highly unlikely to be the bottleneck in any real-world  
> query.
>
> -- Mike
>
> On 2009-06-01 12:44, Shannon wrote:
>> I'm watching to see if ML has an opinion on your () vs.  
>> cts:query(()) question!  As to the modularized approach, I realize  
>> your example didn't call for it, and you're probably already using  
>> that strategy in your production code, but I thought I'd mention it  
>> in case it would help somebody watching the discussion.
>>
>> On Jun 1, 2009, at 3:35 PM, Tim Meagher wrote:
>>
>> Hi Shannon,
>>
>> Thanks, and yes, I like the modularized approach too!
>>
>> Tim
>>
>> ________________________________
>> From:
[email protected]<mailto:[email protected]
klogic.com 
>> >  [mailto:[email protected]] On Behalf Of  
>> Shannon
>> Sent: Monday, June 01, 2009 3:32 PM
>> To: General Mark Logic Developer Discussion
>> Subject: Re: [MarkLogic Dev General] Building cts:search queries  
>> withconditional logic
>>
>> Hi, Tim,
>>
>> I've always had great results using simply the empty sequence.  I'd  
>> be interested to know if there is any advantage to using  
>> cts:query(()).
>>
>> Also, since this is not reflected in your example, just in case,  
>> I'd like to suggest modularizing it a bit, for far easier reading  
>> and maintenance--After initializing your variables with a series of  
>> a let assignments, create a combined cts:query by calling other  
>> functions, like so:
>>
>> let $combined-query := cts:and-query((
>>             if ($foo) then search:qry1(...) else (),
>>             if ($bar) then search:qry2(...) else (),
>> ...
>> ))
>>
>> The search:qry* functions would return a cts:query type --  
>> basically breaking down each field or fieldset of your form, or  
>> some other logical grouping, into separate functions.  Then call  
>> cts:search(input(), cts:combined-query)
>>
>> Best,
>>
>> On Jun 1, 2009, at 3:02 PM, Tim Meagher wrote:
>>
>>
>>
>> Hi Folks,
>>
>>
>>
>> Is there a preferred way to build a series of cts:search  
>> constructor functions when using conditional (and/or) logic?  In  
>> the following example I insert a cts:query() if an value is blank,  
>> in the other I insert an empty sequence:
>>
>>
>>
>> cts:search(
>>
>>   //Record,
>>
>>   cts:and-query ((
>>
>>     if ($publisher ne "") then
>>
>>       cts:element-value-query(xs:QName("Publisher"), $publisher,
>>
>>         ("case-insensitive", "diacritic-insensitive", "punctuation- 
>> insensitive")
>>
>>       )
>>
>>     else cts:query(),
>>
>>     if ($title ne "") then
>>
>>       cts:element-value-query(xs:QName("Title"), $title,
>>
>>         ("case-insensitive", "diacritic-insensitive", "punctuation- 
>> insensitive")
>>
>>       )
>>
>>     else ()
>>
>>   ))
>>
>> )
>>
>>
>>
>> Is there a rule for using cts:query() or the empty sequence () for  
>> dynamically building cts:search constructors?
>>
>>
>>
>> Thanks again,
>>
>>
>>
>> Tim
>>
>>
>> _______________________________________________
>> General mailing list
>> [email protected]<mailto:[email protected] 
>> >
>> http://xqzone.com/mailman/listinfo/general
>>
>>
>> --
>> Shannon Scott Shiflett, XML Programmer
>> ROTUNDA, The University of Virginia Press
>> PO Box 801079, Charlottesville, VA 22904-4318 USA
>> Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
>> Email: [email protected]<mailto:[email protected]>    Tel:  
>> +1 434 924 4495
>> Web: http://rotunda.upress.virginia.edu/
>>
>> _______________________________________________
>> General mailing list
>> [email protected]<mailto:[email protected] 
>> >
>> http://xqzone.com/mailman/listinfo/general
>>
>> --
>> Shannon Scott Shiflett, XML Programmer
>> ROTUNDA, The University of Virginia Press
>> PO Box 801079, Charlottesville, VA 22904-4318 USA
>> Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
>> Email: [email protected]<mailto:[email protected]>    Tel:  
>> +1 434 924 4495
>> Web: http://rotunda.upress.virginia.edu/
>>
>>
>
> _______________________________________________
> General mailing list
> [email protected]
> http://xqzone.com/mailman/listinfo/general

-- 
Shannon Scott Shiflett, XML Programmer
ROTUNDA, The University of Virginia Press
PO Box 801079, Charlottesville, VA 22904-4318 USA
Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
Email: [email protected]   Tel: +1 434 924 4495
Web: http://rotunda.upress.virginia.edu/

_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to