Hi Christian,
Apologies for bringing this back up but if I use "using diacritics insensitive" in the full text search, it seems to turn full text searching off. I have diacritics true on the database. I am just suprised to see diacritics causing the full text searching to be turned off.
All the best, Chris
On Wed, Aug 13, 2014 at 01:18:26PM +0200, Christian GrĂ¼n wrote:
Hi Chris,
there are various caches involved when evaluating queries, but I can't see for the given query where a cache may be utilized. However, your query may be evaluated faster if you simplify the nested where clause:
<results>{ subsequence( ft:mark( for $x in collection($col)//entry where $x//text() contains text { $term } using wildcards order by fn:lower-case( fn:replace(($x//orth[1]/text())[1], '\p{P}|\d+','') ) collation "?lang=ga" return $x ), 1, 5000 ) }</results>
You could as well use a predicate with position(), it may be evaluated faster than subsequence (I'm not sure, though, because most time will probably be spent for ordering all results):
<results>{ ft:mark( for $x in collection($col)//entry where $x//text() contains text { $term } using wildcards order by fn:lower-case( fn:replace(($x//orth[1]/text())[1], '\p{P}|\d+','') ) collation "?lang=ga" return $x )[position() = 1 to 5000] }</results>
Could you please open the InfoView in the GUI, execute the query again and check if the full-text index is applied?
Christian
On Wed, Aug 13, 2014 at 12:02 PM, Christopher Yocum cyocum@gmail.com wrote:
declare variable $term as xs:string external; declare variable $col as xs:string external; <results>{subsequence(ft:mark(for $x in collection($col)//entry where $x//text()[. contains text {$term} using wildcards] order by fn:lower-case(fn:replace(($x//orth[1]/text())[1], '\p{P}|\d+','')) collation "?lang=ga" return $x), 1, 5000)}</results>