annotate software/eXist/webapp/mpdl/_stuff/oxygen-projects/monte-project/lucene/search.xql @ 7:5589d865af7a

Erstellung XQL/XSL Applikation
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 08 Feb 2011 15:16:46 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 xquery version "1.0";
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 module namespace mpdl-lucene = "http://www.mpiwg-berlin.mpg.de/ns/mpdl/lucene/search";
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
4
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 declare namespace ft = "http://exist-db.org/xquery/lucene";
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
6
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 declare function mpdl-lucene:search($docPath, $ftQuery) as node() {
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 let $document := doc($docPath)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 (: performance reasons: all hits (not only the first 10! ) are passed through the :)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 (: for loop: so the overhead in each loop has to be minimized :)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 let $t := $document//s[ft:query(., $ftQuery)]
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 let $tempQueryResult :=
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 for $ss at $poss in $t
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 (: where $poss > 100 and $poss <= 200 :)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 return $ss
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 let $queryResult :=
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 for $s at $pos in $tempQueryResult
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 let $pnOfS := count($document//pb[. << $s]) (: faster: comparison only in pb elements of this document :)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 let $posOfS := count($document//pb[$pnOfS]/following::s[. << $s]) + 1 (: faster: comparisonon only in s elements of this document :)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 let $resultElem :=
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 <hit>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 <pos>{$pos}</pos>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 <pn>{$pnOfS}</pn>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 <pos-of-s>{$posOfS}</pos-of-s>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 {$s}
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 </hit>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 return $resultElem
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 let $resultSize := count($queryResult)
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 let $result :=
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 <ft-query>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 <name>{$ftQuery}</name>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 <result>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 <size>{$resultSize}</size>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 <hits>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 {$queryResult}
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 </hits>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 </result>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 </ft-query>
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 return $result
5589d865af7a Erstellung XQL/XSL Applikation
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 };