- From: andrewc <andrew.cao@cisra.canon.com.au>
- Date: Fri, 04 Mar 2005 10:52:39 +1100
- To: Sihem Amer-Yahia <sihem@research.att.com>
- Cc: public-qt-comments@w3.org
- Message-ID: <4227A347.8010207@cisra.canon.com.au>
Dear Sihem, Thanks for your reply. The following expression: (nodeA ftcontains "some phrase" without content ./nodeB) says only ignore the children nodeB's of nodeA. In this case, will the case (iii) still be considered a match? The following expression: (nodeA ftcontains "word" without content .//nodeB) only searches a single word. In this case, would this be equivalent to: (nodeA ftcontains "word") ? Or what is the semantics of a single word search with FTIgnoreOption specified? Regarding FT specification 3.2.8, should the query be written as: /book[@number="1"] ftcontains "Testing" without content .//title Or can it be written as: /book[@number="1"] ftcontains "Testing" without content /book[@number="1"]//title ? i.e. Does FTIgnoreOption require to use "." to specify the nodes to be ignored? Thanks, Andrew Sihem Amer-Yahia wrote: >Dear Andrew, > >Thank you for your interest in the full-text draft. > > > >>Dear editors, >> >>Could someone provide further clarification of FTIgnoreOption? The >>following expression: >>(nodeA ftcontains "some phrase" without content nodeB) >>Shall we ignore all the subtree rooted from nodeB or ignore only the >>children text nodes that immediately contained by nodeB i.e. do we need >>to promote the children element nodes of nodeB one level up? >> >> > >The expression above returns all nodeA's that (i) contain "some >phrase" as a phrase (in a regular sense) or (ii) contains "... some ><nodeB> ... </nodeB> phrase ..." where nodeB could contain any >subtree after the word "phrase" or (iii) contains <nodeB> "some" ><nodeB> ... </nodeB> "phrase" ... </nodeB> or contains <nodeC> >"some" <nodeB> ... </nodeB> "phrase" ... </nodeC>. > >The last case is the trickiest to explain but the intuition is that if >"some phrase" appears inside nodeA, even if it is in an ignored node >nodeB and even if it requires to ignore some other nodeB, it should be >treated as a match. So, even if the phrase appears inside an ignored >nodeB, it should be considered as a match. > >In simpler words, "some phrase" is considered a match if it appears as >is (which is the regular, traditional sense) or if it requires to >ignore a nodeB no matter whether "some phrase" appears inside an >ignored nodeB or not as long as the phrase is in the scope (subtree) >of nodeA. So, this is done recursively and not just at the children >level. > > > > >>Can this detail be implementation-dependant? >> >> >> > >No, the semantics of FTIgnoreOption should be the same across all >implementations. > > > >>Also in FT specification 3.2.8, the example is: >>/book[@number="1"] ftcontains "Testing" without content .//title >>What does the context path "." mean? Should it be: >>/book[@number="1" and . ftcontains "Testing" without content .//title] >> >>Or the previous example is correct and there is something special with >>semantics of "... ftcontains ... without content ..."? >> >> >> > >The two queries (ours and yours) are equivalent. Our qexample above is correct and that has to do with the semantics of >ftcontains and not of FTIgnoreOption. > >/book[@number="1"] is an XQuery expression that returns all books that >satify the predicate @number="1". Those books are then used by the >subsequent ftcontains expression. > > > > >>Thanks, >> >> >> >> > >Thanks, >Sihem > > > > >> >> > > > >
Received on Thursday, 3 March 2005 23:53:15 UTC