Hi Christian, When I run your script, I do get 14 elements.
When I run the following script I just get 12. <commands> <set option='ftindex'>true</set> <create-db name='factbook'>https://files.basex.org/xml/factbook.xml </create-db> <xquery><![CDATA[ declare function local:search( $database as xs:string, $query as xs:string ) { let $country-search := ft:search($database, $query)/ancestor::country let $city-search := ft:search($database, $query)/ancestor::city/ancestor::country let $other-search := ft:search($database, $query)/parent::*[name() = ('ethnicgroups', 'languages')]/ancestor::country let $country-mark := $country-search[.//name[text() contains text { $query }]] => ft:mark() let $city-mark := $city-search[.//city[text() contains text { $query }]] => ft:mark() let $other-mark := $other-search[.//*[name() = ('ethnicgroups', 'languages')][text() contains text { $query }]] => ft:mark() return ( $country-mark, $city-mark, $other-mark ) }; local:search('factbook', 'German')//mark ]]></xquery> </commands> When you say you can't reproduce it, do you mean you get 14 results from running this script? Cheers, Jack On Thu, 29 Feb 2024, 1:02 am Christian Grün, <christian.gr...@gmail.com> wrote: > Hi Jack, > > Thanks for your observation. > > >> The first result of this query is the entry for Austria. I would expect >> both of the instances of the word 'German' in that entry to be surrounded >> by <mark> tags. However only the first instance is. >> > > I couldn’t reproduce this yet. Here’s a command script that returns 14 > <mark>German</mark> elements: > > <commands> > <set option='ftindex'>true</set> > <create-db name='factbook'>https://files.basex.org/xml/factbook.xml > </create-db> > <xquery><![CDATA[ > let $groups := ('ethnicgroups', 'languages') > let $database := 'factbook' > let $query := 'German' > > let $search := ft:search($database, $query)/parent::* > [name() = $groups]/ancestor::country > let $marked := ft:mark( > $search[.//*[name() = $groups][text() contains text { $query }]] > ) > return $marked//*[text() = 'German'] > ]]></xquery> > </commands> > > Could you check if you get the same result? > > Thanks in advance > Christian > >