Fantastic! Thanks, Mike. On Mar 7, 2014, at 2:01 PM, Michael Blakeley wrote:
> I think it's fixed. With 7.0-2.1 the search:parse test case yields an > or-query of element-word-query terms: > > <cts:or-query qtextjoin="OR" strength="10" qtextgroup="( )" > xmlns:cts="http://marklogic.com/cts" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <cts:element-word-query qtextref="cts:text" qtextpre=""" > qtextpost="""> > <cts:element > xmlns:_1="http://digital.library.ptsem.edu/ia">_1:title</cts:element> > <cts:text>king james</cts:text> > </cts:element-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> > > -- Mike > > On 7 Mar 2014, at 09:45 , Murray, Gregory <[email protected]> wrote: > >> Hi Charles (or anyone who might happen to know), >> >> Do you know if this bug has been fixed in ML 7.0? I'm still on 6.x, but I'd >> upgrade for this bug fix alone. >> >> Thanks, >> Greg >> >> >> On Dec 12, 2013, at 8:43 AM, Murray, Gregory wrote: >> >>> Excellent. Thanks, Charles! >>> >>> On Dec 11, 2013, at 2:42 PM, Charles Greer wrote: >>> >>>> 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 >>> >>> _______________________________________________ >>> General mailing list >>> [email protected] >>> http://developer.marklogic.com/mailman/listinfo/general >> >> _______________________________________________ >> General mailing list >> [email protected] >> http://developer.marklogic.com/mailman/listinfo/general >> > > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
