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="&quot;" qtextref="cts:text" qtextpost="&quot;">
>>     <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

Reply via email to