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

Reply via email to