Hi,
The below is my one method, the index for search I have added.
declare function local:get-search-result($search-condition as xs:string*,
$show-me as xs:string* ,
$start-date as xs:string* ,
$end-date as xs:string*,
$uris as xs:string*,
$page-size as xs:int ,
$page as xs:int) as item()*
{
(:--------------------------------construct the search condition
-------------------------------------:)
let $collection:=
if($show-me eq ("Everything" , "All", "") or
fn:empty($show-me)) then
cts:collection-query(("ResourceCollection","FileCollection","CourseCollection"))
else cts:collection-query("CourseCollection")
let $options:= <search:options>
<search:constraint name="modified-date">
<search:range type="xs:dateTime">
<search:element
ns="http://www.careered.com/Version" name="ModifiedDate"/>
<search:bucket ge={$start-date}
lt={$end-date} name="span"/>
</search:range>
</search:constraint>
<search:constraint name="created-date">
<search:range type="xs:dateTime">
<search:element
ns="http://www.careered.com/Metadata" name="CreateDate"/>
<search:bucket ge={$start-date}
lt={$end-date} name="span"/>
</search:range>
</search:constraint>
<search:operator name="sort">
<search:state name="Title">
<search:sort-order
direction="ascending" type="xs:string">
<search:element
ns="http://www.careered.com/Metadata" name="Title" />
</search:sort-order>
</search:state>
<search:state name="ModifiedDate">
<search:sort-order
direction="descending" type="xs:dateTime">
<search:element
ns="http://www.careered.com/Version" name="ModifiedDate" />
</search:sort-order>
</search:state>
<search:state name="CreateDate">
<search:sort-order
direction="descending" type="xs:dateTime">
<search:element
ns="http://www.careered.com/Metadata" name="CreateDate" />
</search:sort-order>
</search:state>
<search:state name="Institution">
<search:sort-order
direction="ascending" type="xs:string">
<search:element
ns="http://www.careered.com/CourseElement" name="Institution" />
</search:sort-order>
</search:state>
</search:operator>
<search:constraint name="Description">
<search:word>
<search:element
ns="http://www.careered.com/Metadata" name="Description"/>
</search:word>
</search:constraint>
<search:constraint name="Category">
<search:word>
<search:element
ns="http://www.careered.com/CourseElement" name="Category"/>
</search:word>
</search:constraint>
<search:constraint name="Title">
<search:word>
<search:element
ns="http://www.careered.com/Metadata" name="Title"/>
</search:word>
</search:constraint>
<search:constraint name="CourseCode">
<search:value>
<search:element
ns="http://www.careered.com/CourseElement" name="CourseCode"/>
</search:value>
</search:constraint>
<search:constraint name="ID">
<search:value>
<search:element
ns="http://www.careered.com/Metadata" name="ID"/>
</search:value>
</search:constraint>
<search:constraint name="Keywords">
<search:word>
<search:element
ns="http://www.careered.com/Metadata" name="Keywords"/>
</search:word>
</search:constraint>
<search:constraint name="Author">
<search:value>
<search:element
ns="http://www.careered.com/Metadata" name="Author"/>
</search:value>
</search:constraint>
<search:constraint name="Note">
<search:word>
<search:element
ns="http://www.careered.com/Version" name="Note"/>
</search:word>
</search:constraint>
<search:constraint name="ModifiedBy">
<search:value>
<search:element
ns="http://www.careered.com/Version" name="ModifiedBy"/>
</search:value>
</search:constraint>
<search:constraint name="Language">
<search:value>
<search:element
ns="http://www.careered.com/Metadata" name="Language"/>
</search:value>
</search:constraint>
<search:constraint name="FileType">
<search:value>
<search:element
ns="http://www.careered.com/CourseElement" name="FileType"/>
</search:value>
</search:constraint>
<search:constraint name="Identifier">
<search:value>
<search:element
ns="http://www.careered.com/CourseElement" name="Identifier"/>
</search:value>
</search:constraint>
<search:constraint name="IsActive">
<search:value>
<search:element
ns="http://www.careered.com/Metadata" name="IsActive"/>
</search:value>
</search:constraint>
<search:constraint name="Is3rdPartyContent">
<search:value>
<search:element
ns="http://www.careered.com/CourseElement" name="Is3rdPartyContent"/>
</search:value>
</search:constraint>
<search:constraint name="ResourceType">
<search:value>
<search:element
ns="http://www.careered.com/CourseElement" name="ResourceType"/>
</search:value>
</search:constraint>
<search:additional-query>
{
if(fn:empty($uris) or $uris eq
"") then ()
else
cts:document-query(($uris))
}
</search:additional-query>
<search:additional-query>{$collection}</search:additional-query>
<search:additional-query>{dls:documents-query()}</search:additional-query>
<search:term-option>case-insensitive</search:term-option>
<search:term-option>wildcarded</search:term-option>
<search:term-option>diacritic-insensitive</search:term-option>
</search:options>
(:----------------------------------------get search result
-------------------------------------------:)
return search:search($search-condition,$options,$page-size * ($page -
1)+1,$page-size)
};
Thanks,
Sunny Wang01
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Geert Josten
Sent: 2012年5月9日 16:30
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] The value of @total is not right
Hi Sunny,
That is a known 'issue'. It is because search results are counted in so-called
'unfiltered' mode for performance reasons. It uses xdmp:estimate under the
hood. Apparently you are doing a search that requires filtering of search
results. Can you give some more details about your search query?
Kind regards,
Geert
> -----Oorspronkelijk bericht-----
> Van: [email protected] [mailto:general-
> [email protected]] Namens Sunny Wang01
> Verzonden: woensdag 9 mei 2012 9:40
> Aan: MarkLogic Developer Discussion
> Onderwerp: [MarkLogic Dev General] The value of @total is not right
>
> Hi,
>
> Could you help to resolve the below issue?
>
> Using search:search in the Marklogic retrieve the search result, but
> the
returned
> value @total is sometimes bigger than the real count of search
> result,
it makes
> the pagination doesn't work correctly.
>
> Thanks,
> Sunny Wang01
>
> **************** CAUTION - Disclaimer ***************** This e-mail
> contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for
> the use of the addressee(s). If you are not the intended recipient,
please
> notify the sender by e-mail and delete the original message. Further,
you are not
> to copy, disclose, or distribute this e-mail or its contents to any
other person and
> any such actions are unlawful. This e-mail may contain viruses.
> Infosys
has taken
> every reasonable precaution to minimize this risk, but is not liable
> for
any
> damage
> you may sustain as a result of any virus in this e-mail. You should
carry out your
> own virus checks before opening the e-mail or attachment. Infosys
reserves the
> right to monitor and review the content of all messages sent to or
> from
this e-
> mail
> address. Messages sent to or from this e-mail address may be stored on
the
> Infosys e-mail system.
> ***INFOSYS******** End of Disclaimer ********INFOSYS***
> _______________________________________________
> 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