带约束的Marklogic搜索语法

带约束的Marklogic搜索语法,marklogic,marklogic-9,Marklogic,Marklogic 9,我有如下限制条件。。带着约束 <options xmlns="http://marklogic.com/appservices/search"> <additional-query> <cts:and-query xmlns:cts="http://marklogic.com/cts"> <cts:collection-query> <cts:uri>Onc

我有如下限制条件。。带着约束

<options xmlns="http://marklogic.com/appservices/search">
    <additional-query>
        <cts:and-query xmlns:cts="http://marklogic.com/cts">
            <cts:collection-query>
                <cts:uri>OncoWatch</cts:uri>
            </cts:collection-query>
        </cts:and-query>
    </additional-query>
    <constraint name="search-text">
        <word>
            <field name="wos_topic"/>
        </word>
    </constraint>
    <term>
        <term-option>case-insensitive</term-option>
        <term-option>punctuation-insensitive</term-option>
        <term-option>whitespace-insensitive</term-option>
        <term-option>wildcarded</term-option>
    </term>
</options>

肿瘤学家
不区分大小写
标点不敏感
不区分空格
通配符

当我执行搜索字符串
'(搜索文本:(patient*或成人*)'
时,我得到的结果与执行搜索字符串
'(搜索文本:patient*)或(搜索文本:成人*)时的结果完全不同。
。。这两者不一样吗?

如果对搜索字符串应用
search:parse
,您可以很容易地看到差异:

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">
    <additional-query>
        <cts:and-query xmlns:cts="http://marklogic.com/cts">
            <cts:collection-query>
                <cts:uri>OncoWatch</cts:uri>
            </cts:collection-query>
        </cts:and-query>
    </additional-query>
    <constraint name="search-text">
        <word>
            <field name="wos_topic"/>
        </word>
    </constraint>
    <term>
        <term-option>case-insensitive</term-option>
        <term-option>punctuation-insensitive</term-option>
        <term-option>whitespace-insensitive</term-option>
        <term-option>wildcarded</term-option>
    </term>
</options>
return (
  search:parse("(search-text:(patient* OR adult*))", $options),
  search:parse("(search-text:patient*) OR (search-text:adult*)", $options)
)
xquery版本“1.0-ml”;
导入模块命名空间搜索=”http://marklogic.com/appservices/search"
位于“/MarkLogic/appservices/search/search.xqy”;
let$options:=
肿瘤学家
不区分大小写
标点不敏感
不区分空格
通配符
返回(
搜索:解析((搜索文本:(患者*或成人*)”,$options),
搜索:解析((搜索文本:患者*)或(搜索文本:成人*),$options)
)
搜索解析器支持相当复杂的带有AND、OR、NEAR等的搜索字符串,但缺少将多个值输入到单个约束中的支持。后者是正确的写作方式。第一个简单地让解析器从外观上看不清楚,结果OR丢失,有效地导致它搜索短语
搜索文本:“patient*maintal*”
,这与需要两个术语是一样的


如果在搜索字符串上应用
search:parse
,您可以很容易地看到差异:

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">
    <additional-query>
        <cts:and-query xmlns:cts="http://marklogic.com/cts">
            <cts:collection-query>
                <cts:uri>OncoWatch</cts:uri>
            </cts:collection-query>
        </cts:and-query>
    </additional-query>
    <constraint name="search-text">
        <word>
            <field name="wos_topic"/>
        </word>
    </constraint>
    <term>
        <term-option>case-insensitive</term-option>
        <term-option>punctuation-insensitive</term-option>
        <term-option>whitespace-insensitive</term-option>
        <term-option>wildcarded</term-option>
    </term>
</options>
return (
  search:parse("(search-text:(patient* OR adult*))", $options),
  search:parse("(search-text:patient*) OR (search-text:adult*)", $options)
)
xquery版本“1.0-ml”;
导入模块命名空间搜索=”http://marklogic.com/appservices/search"
位于“/MarkLogic/appservices/search/search.xqy”;
let$options:=
肿瘤学家
不区分大小写
标点不敏感
不区分空格
通配符
返回(
搜索:解析((搜索文本:(患者*或成人*)”,$options),
搜索:解析((搜索文本:患者*)或(搜索文本:成人*),$options)
)
搜索解析器支持相当复杂的带有AND、OR、NEAR等的搜索字符串,但缺少将多个值输入到单个约束中的支持。后者是正确的写作方式。第一个简单地让解析器从外观上看不清楚,结果OR丢失,有效地导致它搜索短语
搜索文本:“patient*maintal*”
,这与需要两个术语是一样的


您可以让搜索返回查询并共享其输出吗?您可以让搜索返回查询并共享其输出吗?使用cts:parse可能是另一个选项。与搜索API字符串查询语法不同,cts字符串查询语法允许您对列表应用约束。另外,我发现这个答案很有帮助:使用cts:parse可能是另一种选择。与搜索API字符串查询语法不同,cts字符串查询语法允许您对列表应用约束。请参阅。此外,我发现这个答案很有帮助: