Skip to content

Commit d0d8373

Browse files
authored
Merge pull request #237 from eXist-db/adamretter-fix-db5-search
Adamretter fix db5 search
2 parents 1510e7e + defe872 commit d0d8373

File tree

4 files changed

+191
-131
lines changed

4 files changed

+191
-131
lines changed
Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,49 @@
11
<collection xmlns="http://exist-db.org/collection-config/1.0">
2-
<index>
2+
<index xmlns:db5="http://docbook.org/ns/docbook">
33
<fulltext default="none" attributes="false"/>
44
<lucene>
55
<analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
6-
<text qname="section">
7-
<ignore qname="title"/>
8-
<ignore qname="programlisting"/>
9-
<ignore qname="screen"/>
10-
<ignore qname="synopsis"/>
6+
7+
<!--
8+
Indexes below are ordered by their relevance (or "boost"),
9+
with the most relevant listed first.
10+
11+
Our definitions are based on the assumption that the most
12+
specific content will be deeper within the document.
13+
-->
14+
15+
<!-- document metadata -->
16+
<text qname="db5:keyword" boost="2.0"/>
17+
<text match="/db5:article/db5:info/db5:title" boost="1.7"/>
18+
<text match="/db5:article/db5:para" boost="1.5"/>
19+
20+
<!-- sect3 -->
21+
<text match="/db5:article/db5:sect1/db5:sect2/db5:sect3/db5:title" boost="1.35"/>
22+
<text qname="db5:sect3" boost="1.3">
23+
<ignore qname="db5:title"/>
24+
<ignore qname="db5:programlisting"/>
25+
<ignore qname="db5:screen"/>
26+
<ignore qname="db5:synopsis"/>
1127
</text>
12-
<text qname="title" boost="2.0"/>
13-
</lucene>
14-
<lucene>
15-
<analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
16-
<text qname="para"/>
17-
<text qname="title" boost="2.0"/>
18-
<ignore qname="title"/>
28+
29+
<!-- sect2 -->
30+
<text match="/db5:article/db5:sect1/db5:sect2/db5:title" boost="1.25"/>
31+
<text qname="db5:sect2" boost="1.2">
32+
<ignore qname="db5:title"/>
33+
<ignore qname="db5:programlisting"/>
34+
<ignore qname="db5:screen"/>
35+
<ignore qname="db5:synopsis"/>
36+
</text>
37+
38+
<!-- sect1 -->
39+
<text match="/db5:article/db5:sect1/db5:title" boost="1.15"/>
40+
<text qname="db5:sect1" boost="1.1">
41+
<ignore qname="db5:title"/>
42+
<ignore qname="db5:programlisting"/>
43+
<ignore qname="db5:screen"/>
44+
<ignore qname="db5:synopsis"/>
45+
</text>
46+
1947
</lucene>
2048
</index>
2149
</collection>

src/main/xar-resources/modules/docbook.xql

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import module namespace dq="http://exist-db.org/xquery/documentation/search" at
1111

1212
declare namespace db5="http://docbook.org/ns/docbook";
1313

14-
declare variable $docbook:INLINE :=
14+
declare variable $docbook:INLINE :=
1515
("filename", "classname", "methodname", "option", "command", "parameter", "guimenu", "guimenuitem", "guibutton", "function", "envar");
1616

1717
(:============================================================================:)
@@ -21,7 +21,7 @@ declare variable $docbook:INLINE :=
2121
: Load a docbook document. If a query was specified, re-run the query on the document
2222
: to get matches highlighted.
2323
:)
24-
declare
24+
declare
2525
%public %templates:default("field", "all")
2626
function docbook:load($node as node(), $model as map(*), $q as xs:string?, $doc as xs:string?, $field as xs:string) {
2727
let $path := $config:data-root || "/" || $doc
@@ -54,14 +54,14 @@ declare %public function docbook:to-html($node as node(), $model as map(*)) {
5454
: Generate a table of contents.
5555
:)
5656
declare %public function docbook:toc($node as node(), $model as map(*)) {
57-
let $root as element() := $model("doc")
57+
let $root as element() := $model("doc")
5858
return
5959
<div>
6060
<h3>Contents</h3>
61-
{
61+
{
6262
if (namespace-uri($root) eq "http://docbook.org/ns/docbook")
6363
then docbook:toc-db5($root)
64-
else docbook:print-sections-db4($root/*/(chapter|section))
64+
else docbook:print-sections-db4($root/*/(chapter|section))
6565
}
6666
</div>
6767
};
@@ -82,7 +82,7 @@ declare %private function docbook:to-html($nodes as node()*) {
8282

8383
declare %private function docbook:toc-db5($node as node()) {
8484
let $uri-xsl := concat('xmldb:exist://', $config:app-root, '/modules/xsl/convert-db5-toc.xsl')
85-
let $parameters as element(parameters)? := ()
85+
let $parameters as element(parameters)? := ()
8686
return
8787
transform:transform($node, $uri-xsl, $parameters)
8888
};
@@ -91,7 +91,7 @@ declare %private function docbook:toc-db5($node as node()) {
9191

9292
declare %private function docbook:to-html-db5($node as node()) {
9393
let $uri-reative-from-app as xs:string := replace($config:app-root, '/db/', '/')
94-
let $uri-relative-from-document as xs:string :=
94+
let $uri-relative-from-document as xs:string :=
9595
concat($config:data-root-rel, '/', replace(request:get-parameter('doc', ()), '(.*)[/\\][^/\\]+$', '$1'))
9696
let $uri-xsl := concat('xmldb:exist://', $config:app-root, '/modules/xsl/convert-db5.xsl')
9797
(: Create a content wrapper so we can include multiple inputs for the transformation: :)
@@ -112,11 +112,11 @@ declare %private function docbook:to-html-db5($node as node()) {
112112
()
113113
}
114114
</contentswrapper>
115-
let $parameters as element(parameters) :=
115+
let $parameters as element(parameters) :=
116116
<parameters>
117117
<param name="uri-relative-from-app" value="{$uri-reative-from-app}"/>
118118
<param name="uri-relative-from-document" value="{$uri-relative-from-document}"/>
119-
</parameters>
119+
</parameters>
120120
return
121121
transform:transform($contents, $uri-xsl, $parameters)
122122
(:<p>XX</p>:)
@@ -148,7 +148,7 @@ declare %private function docbook:to-html-db4($nodes as node()*) {
148148
for $node in $nodes
149149
return
150150
typeswitch ($node)
151-
151+
152152
(: Main sections: :)
153153
case element(book) return
154154
<article>
@@ -170,7 +170,7 @@ declare %private function docbook:to-html-db4($nodes as node()*) {
170170
<a name="D{$node/@exist:id}"></a>
171171
{docbook:process-children($node)}
172172
</section>
173-
173+
174174
case element(abstract) return
175175
<blockquote>{docbook:process-children($node)}</blockquote>
176176
case element(title) return
@@ -187,7 +187,7 @@ declare %private function docbook:to-html-db4($nodes as node()*) {
187187
<a name="D{$node/../@exist:id}"></a>,
188188
docbook:process-children($node)
189189
}
190-
190+
191191
case element(para) return
192192
<p>{docbook:process-children($node)}</p>
193193
case element(emphasis) return
@@ -287,7 +287,7 @@ declare %private function docbook:to-html-db4($nodes as node()*) {
287287
<li>{docbook:process-children($node)}</li>
288288
case element(tocentry) return
289289
docbook:process-children($node)
290-
290+
291291
case element(guimenuitem) return
292292
<span class="guimenuitem">{docbook:process-children($node)}</span>
293293
case element(guibutton) return
@@ -296,8 +296,8 @@ declare %private function docbook:to-html-db4($nodes as node()*) {
296296
<span class="sgmltag">&lt;{docbook:process-children($node)}&gt;</span>
297297
case element(exist:match) return
298298
<span class="hi">{$node/text()}</span>
299-
300-
299+
300+
301301
(: Table related: :)
302302
case element(informaltable) return
303303
<table border="0" cellpadding="0" cellspacing="0">{$node/node()}</table>
@@ -312,16 +312,16 @@ declare %private function docbook:to-html-db4($nodes as node()*) {
312312
case element(row) return
313313
<tr>{docbook:process-children($node)}</tr>
314314
case element(entry) return
315-
if ($node/ancestor::thead) then
315+
if ($node/ancestor::thead) then
316316
<th>{docbook:process-children($node)}</th>
317317
else
318-
<td>{docbook:process-children($node)}</td>
318+
<td>{docbook:process-children($node)}</td>
319319
case element(col) return
320320
<col width="{$node/@width}">{docbook:process-children($node)}</col>
321321
case element(colgroup) return
322322
<colgroup>{docbook:process-children($node)}</colgroup>
323-
324-
(: Defaults/General: :)
323+
324+
(: Defaults/General: :)
325325
case element() return
326326
let $name := local-name($node)
327327
return
@@ -398,7 +398,7 @@ declare %private function docbook:table($node as node()) {
398398
(:----------------------------------------------------------------------------:)
399399

400400
declare %private function docbook:code($elem as element()) {
401-
let $lang :=
401+
let $lang :=
402402
if ($elem//markup) then
403403
"xml"
404404
else if ($elem/@language) then
@@ -446,7 +446,7 @@ declare %private function docbook:get-resource-uri($ref as xs:string) as xs:stri
446446
let $prefix-path := if (starts-with($ref, '/'))
447447
then replace($config:app-root, '/db/', '/')
448448
else concat($config:data-root-rel, '/', replace(request:get-parameter('doc', ()), '(.*)[/\\][^/\\]+$', '$1'))
449-
return
449+
return
450450
concat($prefix-path, '/', $ref)
451451
};
452452

0 commit comments

Comments
 (0)