Full text proximity search of Cyrillic text encoded in TEI XML using eXist-db
<p xmlns="http://www.tei-c.org/ns/1.0" xml:id="p17">
<s>
<w xml:id="w59">је</w>
<w xml:id="w61">виши</w>
<w xml:id="w63">земаљски</w>
<w xml:id="w65">судски</w>
<w xml:id="w67">саветник</w> (
<w xml:id="w69">апелациони</w>
<w xml:id="w71">саветник</w>)
<w xml:id="w73">у</w>
<w xml:id="w77">веома</w>
<w xml:id="w79">познат</w>
<w xml:id="w81">на</w>
<w xml:id="w83">пољу</w>
<w xml:id="w85"><exist:match xmlns:exist="http://exist.sourceforge.net/NS/exist">српске</exist:match></w>
<w xml:id="w87"><exist:match xmlns:exist="http://exist.sourceforge.net/NS/exist">књижевности</exist:match></w>,
<w xml:id="w89">како</w>
<w xml:id="w91">због</w>
<w xml:id="w93">вишегодишњег</w>
<w xml:id="w95">уређивања</w> „
<w xml:id="w97">Далматинског</w>
<w xml:id="w99">алманаха</w>“,
<w xml:id="w101">за</w>
</s>
</p>xquery version "3.1";
declare namespace tei="http://www.tei-c.org/ns/1.0";
let $query :=
'"српске књижевности"~1'
(:
<query><near><term>српске</term><term>књижевности</term></near></query>
:)
return
collection("/db/test")//tei:p[ft:query(., $query)] => util:expand()<?xml version="1.0" encoding="UTF-8"?>
<teiCorpus xmlns="http://www.tei-c.org/ns/1.0">
<TEI>
<p xml:id="p17">
<s>
<w xml:id="w59">је</w>
<w xml:id="w61">виши</w>
<w xml:id="w63">земаљски</w>
<w xml:id="w65">судски</w>
<w xml:id="w67">саветник</w> (
<w xml:id="w69">апелациони</w>
<w xml:id="w71">саветник</w>)
<w xml:id="w73">у</w>
<w xml:id="w77">веома</w>
<w xml:id="w79">познат</w>
<w xml:id="w81">на</w>
<w xml:id="w83">пољу</w>
<w xml:id="w85">српске</w>
<w xml:id="w87">књижевности</w>,
<w xml:id="w89">како</w>
<w xml:id="w91">због</w>
<w xml:id="w93">вишегодишњег</w>
<w xml:id="w95">уређивања</w> „
<w xml:id="w97">Далматинског</w>
<w xml:id="w99">алманаха</w>“,
<w xml:id="w101">за</w>
</s>
</p>
</TEI>
</teiCorpus>
<collection xmlns="http://exist-db.org/collection-config/1.0">
<index xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tei="http://www.tei-c.org/ns/1.0">
<fulltext default="none" attributes="false"/>
<lucene>
<text qname="tei:p"/>
<text qname="tei:w"/>
</lucene>
</index>
</collection>
This gist was prompted by a question on the eXist-open mailing list. See http://markmail.org/message/zudf7qp4pqjx6xhi.
To run these files:
/db/test in eXist/db/test collection/db/test with xmldb:reindex("/db/test")/db/test/test.xqtest_results.xml file included here.