- From: Michael Dyck <jmdyck@ibiblio.org>
- Date: Tue, 08 Jun 2010 00:21:19 -0700
- To: public-qt-comments@w3.org
Paul J. Lucas wrote:
> In 4.2.6.3 of the XQuery Full Text spec, the semantics seem clear enough.
> However, what's not clear is how ftnot works when there are no matches to begin with.
>
> Given:
>
> let $x := <msg>hello, world</msg>
> return $x contains text ftnot "goodbye"
>
> It's clear that the XML document does not contain "goodbye".
> Hence, the matchTokenInfos() function will return no TokenInfo objects and,
> subsequently, applyQueryTokensAsPhrase() will return an empty <allMatches/>.
>
> Calling ApplyFTUnaryNot() on <allMatches/> will do nothing since there are
> no stringIncludes to flip to stringExcludes and vice versa.
Not quite nothing. Note the first few lines of fts:UnaryNotHelper():
if (fn:empty($matches))
then <fts:match/>
else ...
Thus, calling ApplyFTUnaryNot() on <allMatches/> yields
<allMatches><match/></allMatches>
which will cause the FTContainsExpr to yield true, as you expect.
-Michael
Received on Tuesday, 8 June 2010 07:28:18 UTC