Changeset 292 for MDService


Ignore:
Timestamp:
03/26/10 14:23:44 (14 years ago)
Author:
ljo
Message:

First round of searchRetrieve results.

Location:
MDService/trunk/xquery
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • MDService/trunk/xquery/cmd-model.xql

    r287 r292  
    2929        cmd-model:query-model($cmd-index-path, $collection, $format, $max-depth)
    3030    else if ($operation eq $cmd-model:searchRetrieve) then
    31       let $cql-query := request:get-parameter("query", "MDGroup/Actors/Actor")
    32       return cmd-model:search-retrieve($cql-query)
     31      let $cql-query := request:get-parameter("query", "MDGroup/Actors/Actor"),
     32        $start-item := request:get-parameter("istart", 1),
     33        $end-item := request:get-parameter("iend", 50)
     34       
     35      return cmd-model:search-retrieve($cql-query, $collection, $format, $start-item, $end-item)
    3336    else
    3437      <error>Unknown operation</error>
  • MDService/trunk/xquery/cmd-model.xqm

    r286 r292  
    198198  Seraliseringsformat.
    199199:)
    200 declare function cmd-model:serialise-as($item as node(), $format as xs:string) as item()? {
     200declare function cmd-model:serialise-as($item as node()?, $format as xs:string) as item()? {
    201201      if ($format eq $cmd-model:responseFormatJSon) then
    202202        let $option := util:declare-option("exist:serialize", "method=text media-type=application/json")
     
    228228
    229229(:~
    230   API function queryModel.
    231 :)
    232 declare function cmd-model:search-retrieve($cql-query as xs:string, $collection as xs:string+, $format as xs:string, $max-depth as xs:integer) as item() {
    233         cmd-model:serialise-as(<error>Unimplemented</error>, $format)
    234 
    235 };
    236 
     230  API function searchRetrieve.
     231:)
     232declare function cmd-model:search-retrieve($cql-query as xs:string, $collection as xs:string+, $format as xs:string, $start-item as xs:integer, $end-item as xs:integer) as item()* {
     233  let $results := util:eval(fn:concat("collection('", xdb:decode($collection), "')", xdb:decode($cql-query), "/ancestor::CMD")),
     234    $result-count := fn:count($results),
     235    $result-seq := subsequence($results, $start-item, $end-item),
     236    $seq-count := fn:count($result-seq),
     237    $result-fragment :=
     238<searchRetrieveResponse>
     239        <numberOfRecords>{$result-count}</numberOfRecords>
     240        <echoedSearchRetrieveRequest>{$cql-query, $collection, $start-item, $end-item}</echoedSearchRetrieveRequest>
     241        <diagnostics>{$seq-count}</diagnostics>
     242        <records>
     243        {$result-seq}
     244        </records>
     245</searchRetrieveResponse>
     246
     247    return
     248        cmd-model:serialise-as($result-fragment, $format)
     249
     250};
     251(:
     252{cmdComponent}   //{cmdComponent}        Actor   //Actor
     253{cmdPath}.      //{cmdPath}/{cmdComponent}      Actor.Contact.Phone     //Actor/Contact/Phone
     254{cmdIndex} {rel} {term}         //{cmdIndex}[\. {rel} '{term}']         Actors.Actor.Sex=f      //Actors/Actor/Sex[.='f']
     255{cmdIndex} any {term}   //{cmdIndex}[contains(. '{term}')]      Organisation.Name any University        //Organisation/Name[contains(.,'University')]
     256and, or, and not        ?!      Organisation.Name any University and Actor.gender=m     ?!
     257
     258//MDGroup[Actors/Actor/Role[.='sponsor'] and Actors/Actor/Name[contains(.,'a')]]
     259//Title[starts-with(.,'a')]
     260//Title[starts-with(.,'A')]
     261//Title[contains(.,'analysis')]
     262http://demo.spraakdata.gu.se/clarin/cmd/model/stats?operation=searchRetrieve&query=//Title[contains(.,'analysis')]&collection=
     263
     264<record>
     265  <recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
     266  <recordPacking>xml</recordPacking>
     267  <recordData>
     268    <srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-v1.1">
     269     <dc:title>This is a Sample Record</dc:title>
     270    </srw_dc:dc>
     271  </recordData>
     272  <recordPosition>1</recordPosition>
     273  <extraRecordData>
     274    <rel:score xmlns:rel="info:srw/extensions/2/rel-1.0">
     275      0.965
     276    </rel:rank>
     277   </extraRecordData>
     278</record>
     279
     280<searchRetrieveResponse>
     281        <numberOfRecords>integer</numberOfRecords>
     282        <echoedSearchRetrieveRequest>query itself (together with the context-collection) </echoedSearchRetrieveRequest>
     283        <diagnostics>if necessary</diagnostics>
     284        <records>
     285                ....
     286        </records>
     287</searchRetrieveResponse>
     288
     289:)
Note: See TracChangeset for help on using the changeset viewer.