Hi Greg (and Mike), Thanks for the clear reproduction. I've filed a bug to fix this situation.
Charles On 12/09/2013 12:14 PM, Murray, Gregory wrote: > Thanks, Mike. Good to know. Looks like the output of search:parse confirms > what I had found informally. > > > On Dec 9, 2013, at 1:55 PM, Michael Blakeley wrote: > >> I couldn't say if that's a bug in your options or somewhere in search.xqy, >> but I thought I'd pass along a debugging tip. Call search:parse so you can >> see the query that is generated - and so other folks can reproduce the >> problem. It's also a good idea to verify your options using >> search:check-options and the strict option: yours seem to be ok. >> >> xquery version "1.0-ml"; >> import module namespace search="http://marklogic.com/appservices/search" >> at "/MarkLogic/appservices/search/search.xqy"; >> let $options := >> <options xmlns="http://marklogic.com/appservices/search"> >> <constraint name="title"> >> <word> >> <element ns="http://digital.library.ptsem.edu/ia" name="title"/> >> </word> >> </constraint> >> <term> >> <default ref="title"/> >> </term> >> </options> >> return ( >> search:check-options($options, true()), >> search:parse('"king james" OR authorized', $options)) >> >> => >> <cts:or-query qtextjoin="OR" strength="10" qtextgroup="( )" >> xmlns:cts="http://marklogic.com/cts" >> xmlns:xs="http://www.w3.org/2001/XMLSchema"> >> <cts:word-query qtextpre=""" qtextref="cts:text" qtextpost="""> >> <cts:text>king james</cts:text> >> </cts:word-query> >> <cts:element-word-query qtextref="cts:text"> >> <cts:element >> xmlns:_1="http://digital.library.ptsem.edu/ia">_1:title</cts:element> >> <cts:text>authorized</cts:text> >> </cts:element-word-query> >> </cts:or-query> >> >> This makes it obvious that the resulting query is not what you want: "king >> james" term is a simple word-query term, and the "authorized" term is an >> element-word-query term. >> >> -- Mike >> >> On 9 Dec 2013, at 09:47 , Murray, Gregory <[email protected]> wrote: >> >>> After further experimentation, I am finding that <default> doesn't work as >>> I would expect when an exact phrase is involved. For example, I was >>> expecting this query: >>> >>> xquery version "1.0-ml"; >>> import module namespace search="http://marklogic.com/appservices/search" at >>> "/MarkLogic/appservices/search/search.xqy"; >>> let $options := >>> <options xmlns="http://marklogic.com/appservices/search"> >>> <constraint name="title"> >>> <word> >>> <element ns="http://digital.library.ptsem.edu/ia" name="title"/> >>> </word> >>> </constraint> >>> <term> >>> <default ref="title"/> >>> </term> >>> </options> >>> return search:search('"king james" OR authorized', $options) >>> >>> to return the same results as this query: >>> >>> xquery version "1.0-ml"; >>> import module namespace search="http://marklogic.com/appservices/search" at >>> "/MarkLogic/appservices/search/search.xqy"; >>> let $options := >>> <options xmlns="http://marklogic.com/appservices/search"> >>> <constraint name="title"> >>> <word> >>> <element ns="http://digital.library.ptsem.edu/ia" name="title"/> >>> </word> >>> </constraint> >>> </options> >>> return search:search('title:"king james" OR title:authorized', $options) >>> >>> Not so! Instead, query #1 returns the same results as taking query #2 and >>> changing title:"king james" to "king james" -- which clearly indicates that >>> the <default> option is NOT applying the "title" constraint to quoted/exact >>> phrases. >>> >>> Could this be a bug? The documentation for search:search, in the >>> description of <term>, says that <default> "determines special handling to >>> all terms". In my mind, an exact phrase *is* a term, and therefore the >>> <default> constraint should be applied to exact phrases -- or am I >>> misunderstanding what a "term" is? >> _______________________________________________ >> General mailing list >> [email protected] >> http://developer.marklogic.com/mailman/listinfo/general > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general -- Charles Greer Senior Engineer MarkLogic Corporation [email protected] Phone: +1 707 408 3277 www.marklogic.com _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
