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
