Marklogic中的可搜索表达式
如何在MarkLogic中的可搜索表达式中指定多个XPath 我尝试了以下方法:Marklogic中的可搜索表达式,marklogic,marklogic-9,Marklogic,Marklogic 9,如何在MarkLogic中的可搜索表达式中指定多个XPath 我尝试了以下方法: let $options := <options xmlns="http://marklogic.com/appservices/search"> <additional-query> <cts:collection-query xmlns:cts="http://marklogic.com/cts"> <cts:uri>
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>
let$选项:=
肿瘤学家
/es:信封/es:原始/wos\U dps:记录/wos\U dps:静态数据/wos\U dps:摘要/wos\U dps:标题|
/es:envelope/es:raw/wos\U dps:REC/wos\U dps:static\U data/wos\U dps:fullrecord\U metadata/wos\U dps:abstracts
不区分大小写
标点不敏感
不区分空格
通配符
未过滤
我得到以下错误
[1.0-ml]XDMP-uncherchable:cts:search(fn:collection()/es:envelope/es:raw/wos\u dps:REC/wos\u dps:static\u data/wos\u dps:summary/wos\u dps:titles | fn:collection()/es:envelope/es:raw/wos\u dps:REC/wos\u dps:static\u data/wos\u dps:fullrecord\u元数据/wos\u dps:abstracts、cts:and query((cts:word:word查询不区分大小写)(“,”不区分大小写“,”标点符号“),“不区分空格”、“通配符”、“lang=en”)、1)、cts:collection查询(“OncoWatch”)、())[1到10]--表达式不可搜索
但是,当我尝试使用单个XPath时,一切都正常…请尝试编写如下内容:
<searchable-expression xmlns:xh="http://www.w3.org/1999/xhtml">
/(xh:html | CITATION)
</searchable-expression>
/(xh:html |引文)
您可以在单个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>
/es:envelope/es:raw/wos\u dps:REC/wos\u dps:static\u data[wos\u dps:summary/wos\u dps:titles或wos\u dps:fullrecord\u metadata/wos\u dps:abstracts]
可搜索表达式必须是单个表达式。您可以尝试将条件部分放在谓词中(使用
而不是“或”作为运算符)正如以利亚所建议的
您可以使用来探测表达式中不可搜索的部分。启用它,尝试将表达式用作XPath表达式,然后查看ErrorLog.txt以查看是否有任何段报告为不可搜索
大概是这样的:
xquery version "1.0-ml";
(
xdmp:query-trace(fn:true()),
fn:doc()/your/xpath/expr/here,
xdmp:query-trace(fn:false())
)
这里有一个输出示例:
您也可以创建字段,仅在我执行此操作时对特定元素执行搜索(/es:envelope/es:raw/wos\u dps:REC/wos\u dps:static\u data/wos\u dps:summary/wos\u dps:titles/es:envelope/es:raw/wos\u dps:REC/wos\u dps:static\u data/wos\u dps:fullrecord\u metadata/wos\u dps:abstracts)
我仍然会遇到同样的错误..如何告诉搜索在默认情况下仅对字段执行而不指定约束括号必须位于路径的某个部分之后。在Navin的示例中,唯一的共享路径是“/”。您可以这样做(即,将初始斜杠移到paren之外,并有两条长路径),或更紧凑的内容,如:/es:envelope/es:raw/wos\u dps:REC/wos\u dps:static\u data/(wos\u dps:summary/wos\u dps:titles | wos\u dps:fullrecord\u metadata/wos\u dps:abstracts)
好的,,,那么可搜索表达式只接受一个xpath?如果我们有多个xpath,那么我们在元素级别执行或操作,或者如果在根级别执行完全不同的xpath操作?