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
