This might also be a good place to search:resolve-nodes. That function allows 
use of all the normal search API options, but doesn't build the search:response 
wrapper XML around the results. This can be useful if you don't want 
highlighting, for example.

http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/apidoc/searchapi.xml&category=Search&function=search:resolve-nodes

For a limit, I would suggest using 10,000. This is something of a convention in 
RDBMS applications. It limits the worst-case runtime somewhat, while still 
allowing substantial result sets.

Just for academic interest, I think the most efficient way to get max 
unsignedLong is xdmp:not64(0). But using that in a context like search, where 
it might drive I/O, could lead to disaster. Even in a strict CPU context, 
that's something like 600 years worth of single-threaded instructions. It would 
be more prudent to select a smaller notion of everything, such as 10,000.

-- Mike

On 8 May 2012, at 07:52 , Geert Josten wrote:

> Hi Danny,
>  
> I assume there are separate logging docs/fragments for user activities on 
> books vs chapters vs subjects?
>  
> In that case you could take the following approach:
> -        Use search:parse to convert the search string into a cts:query object
> -        Use cts:and-query and something like 
> cts:element-attribute-value-query to combine it with a restriction on books, 
> chapters or subjects
> -        Make for each type two calls using cts:values on the date/timestamp 
> element/attribute, one ascending with limit=1, the other descending with 
> limit=1
> -        Cast the values to xs:dateTime and substract them. That gives you a 
> xs:duration for each.
>  
> Don’t worry about the multiple cts calls, they are very fast. Taking this 
> approach it should return user activities in sub sec. Using aggregation like 
> you intended it could easily become minutes or even hours (depending on 
> database size).
>  
> Kind regards,
> Geert
>  
> Van: [email protected] 
> [mailto:[email protected]] NamensDanny Sinang
> Verzonden: dinsdag 8 mei 2012 16:25
> Aan: MarkLogic Developer Discussion
> Onderwerp: Re: [MarkLogic Dev General] How to get max value in ML
>  
> Hi Geert,
>  
> We're logging user activities with regards to accessing a book (flipping 
> through pages, annotating, etc).
>  
> search:search() is used to fetch the logs that meet some reporting criteria 
> (i.e. date range, which books, which chapters, etc).
>  
> Once we get the filtered results, we feed them to a function to get the time 
> spent by a user per book, chapter or subject.
>  
> Time spent is the aggregate value.
>  
> Regards,
> Danny
> 
> On Tue, May 8, 2012 at 10:15 AM, Geert Josten <[email protected]> wrote:
> Hi Danny,
>  
> Can you elaborate on the aggregate values? That is probably quite 
> in-efficient too. You might be better off doing such work directly with cts 
> functions, if possible.
>  
> Kind regards,
> Geert
>  
> Van: [email protected] 
> [mailto:[email protected]] NamensDanny Sinang
> Verzonden: dinsdag 8 mei 2012 16:10
> Aan: MarkLogic Developer Discussion
> Onderwerp: Re: [MarkLogic Dev General] How to get max value in ML
>  
> Hi Geert,
>  
> Thanks.
>  
> Yes, you have a good point there. Returning all those results will be 
> inefficient.
>  
> But I'll be forcing the users to limit the results by date instead and we'll 
> be imposing a maximum date range.
>  
> I just need to make sure search:search() returns all the results because I'm 
> feeding the entire result set to a function that computes for some aggregate 
> values.
>  
> Regards,
> Danny
> 
> On Tue, May 8, 2012 at 10:04 AM, Geert Josten <[email protected]> wrote:
> Hi Danny,
>  
> There is no pre-declared constant as far as I know if that is what you mean. 
> But I’m sure it follows the specs of the XML Schema standard.
>  
> Are you sure you want search:search to return so many results in one call? It 
> is memory in-efficient, and showing so many results in for instance in a 
> browser is likely to choke the browser. If you’d use a crawler that supports 
> parallel threads, you’d see that a page size of something like 100 to 500 
> would work much better..
>  
> Kind regards,
> Geert
>  
> Van: [email protected] 
> [mailto:[email protected]] NamensDanny Sinang
> Verzonden: dinsdag 8 mei 2012 15:58
> Aan: MarkLogic Developer Discussion
> Onderwerp: Re: [MarkLogic Dev General] How to get max value in ML
>  
> Hi Geert,
>  
> I'm trying to get the maximum unsigned long value to tell seach:search() to 
> return all results.
>  
> I was hoping there would be an ML function out there that would tell me the 
> max unsigned long value.
>  
> Regards,
> Danny
> 
> On Tue, May 8, 2012 at 9:54 AM, Geert Josten <[email protected]> wrote:
> Hi Danny,
>  
> Can you elaborate on what you exactly mean? Given a sequence, you can just 
> use fn:max() to get the highest value. If you want to determine the highest 
> value that occurs anywhere in the database, you can use cts:values with a 
> descending order and limit of 1. The first and single result is the highest..
>  
> Kind regards,
> Geert
>  
> Van: [email protected] 
> [mailto:[email protected]] NamensDanny Sinang
> Verzonden: dinsdag 8 mei 2012 15:49
> Aan: general
> Onderwerp: [MarkLogic Dev General] How to get max value in ML
>  
> Hi,
>  
> Is there a function in ML that returns the maximum values for integer and 
> unsigned long ?
>  
> Regards,
> Danny
> 
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
> 
>  
> 
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
> 
>  
> 
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
> 
>  
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general

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

Reply via email to