我在eXist-db中的TEI XML文档集合中对div元素进行了Lucene索引。通过文档名称,章节编号和章节编号(即http://website.com/document.xml/7/36)访问document.xml第7章中第36部分的文档部分。
我使用以下xquery代码进行搜索:
let $results :=
for $doc in $documents return
for $chapter at $chapter_no in $doc//tei:text/tei:body/tei:div
for $section at $section_no in $chapter/tei:div
let $text_with_matches := if ($q='') then $chapter
else $section[ft:query(., $q)]
where $text_with_matches
return
<result_list>
<chapter_no>{$chapter_no}</chapter_no>
<section_no>{$section_no}</section_no>
<kwic>{kwic:summarize($text_with_matches,
<config width="55"/>)}
</kwic>
</result_list>
return
<results>
{$results}
</results>
如果$ q为“葡萄牙”,则得到如下结果:
<results>
<result_list>
<text_with_matches/>
<chapter_no>7</chapter_no>
<section_no>26</section_no>
<kwic>
<p>
<span class="previous">
... var i stedse mere rivende Nedgang: Spanien og
</span>
<span class="hi">Portugal</span>
<span class="following">
, Italien, Rumænien, de sydamerika ...
</span>
</p>
</kwic>
</result_list>
</results>
现在,除了Chapter_no和section_no,我还想要页码。这些是使用pb(分页符)元素制成的。例如。文档中第5页的末尾和第6页的顶部看起来像这样:
... paa alle disse <pb n="6"/> Omraader. Det var ...
因此,在找到的文本之前的部分中的pb元素中,我想要最后一个(即,最接近找到的文本)的编号。
有人知道如何修改xquery来实现吗?