Marklogic中的searchable-expression

时间:2018-08-06 16:56:45

标签: marklogic marklogic-9

如何在MarkLogic的searchable-expression中指定多个XPath?

我尝试了以下操作:

let $options :=
<options xmlns="http://marklogic.com/appservices/search">
    <additional-query>
        <cts:collection-query xmlns:cts="http://marklogic.com/cts">
            <cts:uri>OncoWatch</cts:uri>
        </cts:collection-query>
    </additional-query>
     <searchable-expression xmlns:es="http://marklogic.com/entity-services"
                           xmlns:wos_dps="http://clarivate.com/schema/wok5.27/public/FullRecord">
        /es:envelope/es:raw/wos_dps:REC/wos_dps:static_data/wos_dps:summary/wos_dps:titles|
        /es:envelope/es:raw/wos_dps:REC/wos_dps:static_data/wos_dps:fullrecord_metadata/wos_dps:abstracts
    </searchable-expression>
    <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>
    <search-option>unfiltered</search-option>
    <transform-results apply="empty-snippet"/>
</options>

我收到以下错误

  

[1.0-ml] XDMP-UNSEARCHABLE:cts:search(fn:collection()/ es:envelope / es:raw / wos_dps:REC / wos_dps:static_data / wos_dps:summary / wos_dps:titles | fn:collection( )/ es:envelope / es:raw / wos_dps:REC / wos_dps:static_data / wos_dps:fullrecord_metadata / wos_dps:abstracts,cts:and-query((cts:word-query(“ *”,(“不区分大小写”, “标点不敏感”,“空格不敏感”,“通配符”,“ lang = en”),1),cts:collection-query(“ OncoWatch”)),()))[1至10]-表达式无法搜索

但是当我尝试单个XPath时,一切正常...

3 个答案:

答案 0 :(得分:3)

可搜索表达式必须是单个表达式。您可以尝试将条件部分放在谓词中(使用|代替“ or”作为运算符),如以利亚所建议。

您可以使用xdmp:query-trace来搜索表达式中哪些部分不可搜索。启用它,尝试将您的表达式用作XPath表达式,然后查看 ErrorLog.txt 以查看是否有任何段报告为不可搜索。

类似这样的东西:

xquery version "1.0-ml";
(
  xdmp:query-trace(fn:true()),
  fn:doc()/your/xpath/expr/here,
  xdmp:query-trace(fn:false())
)

这里有一个输出示例:

http://docs.marklogic.com/guide/performance/query_meters#id_84776

答案 1 :(得分:0)

请尝试编写如下内容:

<searchable-expression xmlns:xh="http://www.w3.org/1999/xhtml">
    /(xh:html | CITATION) 
</searchable-expression>

答案 2 :(得分:0)

您可以在单个XPath表达式中添加条件路径,如下所示:

/es:envelope/es:raw/wos_dps:REC/wos_dps:static_data[wos_dps:summary/wos_dps:titles or wos_dps:fullrecord_metadata/wos_dps:abstracts]