Marklogic附加查询和可搜索表达式问题
我的选项文件中既有Marklogic附加查询和可搜索表达式问题,marklogic,marklogic-9,Marklogic,Marklogic 9,我的选项文件中既有可搜索表达式也有附加查询。。在我的附加查询中我有cts字段值查询,当我有这个查询时,我会得到空结果,即使我知道有文档同时匹配可搜索表达式和附加查询。。当我取出cts:field-value查询时,结果与预期一致。。我包括选项文件和xdmp:query计划。。我不明白为什么这个问题 let $options := <options xmlns="http://marklogic.com/appservices/search"> <additional-q
可搜索表达式
也有附加查询
。。在我的附加查询中
我有cts字段值查询
,当我有这个查询时,我会得到空结果,即使我知道有文档同时匹配可搜索表达式
和附加查询
。。当我取出cts:field-value查询
时,结果与预期一致。。我包括选项文件和xdmp:query计划
。。我不明白为什么这个问题
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:field-value-query>
<cts:field>wos_doctype</cts:field>
<cts:text>Article</cts:text>
<cts:text>Review</cts:text>
</cts:field-value-query>
</cts:and-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/wos_dps:title
</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>
<return-plan>true</return-plan>
</options>
let $q := '"pancreatic cancer"'
return
search:search($q, $options)
查询计划显示,在这两种情况下,片段都是从索引中选择的,因此我认为您的字段值查询确实匹配某些内容。它们通过过滤被排除 这可能是因为你的搜索表达式。它指向信封深处的一个非常特定的元素,字段的值可能来自该路径之外的元素 如果您试图影响搜索片段,我建议使用
转换结果
和首选匹配
功能,而不是可搜索表达式。仅对可搜索表达式使用高级元素,如/es:envelope/es:raw或/es:envelope/es:instance,或者根本不使用
嗯 查询计划显示,在这两种情况下,片段都是从索引中选择的,因此我认为您的字段值查询确实匹配了一些内容。它们通过过滤被排除 这可能是因为你的搜索表达式。它指向信封深处的一个非常特定的元素,字段的值可能来自该路径之外的元素 如果您试图影响搜索片段,我建议使用
转换结果
和首选匹配
功能,而不是可搜索表达式。仅对可搜索表达式使用高级元素,如/es:envelope/es:raw或/es:envelope/es:instance,或者根本不使用
嗯 您所在领域的配置是什么?如果只执行字段值查询(而不执行其他查询),会发生什么情况?字段的配置是什么?当您仅执行字段值查询(而不执行其他查询)时会发生什么情况?您的意思是,如果我将
可搜索表达式
与附加查询
一起使用,则字段应位于可搜索表达式
内?在我的例子中,字段指向的路径不在可搜索表达式中,因此问题出在哪里?如何实现当用户搜索字符串(无约束)时,搜索需要在xpath集合中执行。在所有附加查询
约束之上?我通常会创建一个聚焦于所需路径的字段,并为此创建一个字段搜索约束,然后指示用户在搜索短语前面加上约束名称+冒号。。例如,“胰腺癌”
变成了标题栏:“胰腺癌”
。是的,我试图避免使用约束的方式,例如:)当search ws用于许多企业应用程序时,很难强制应用程序开发人员将此约束添加到他们的搜索字符串中,但当没有其他方法时,然后我们不得不假设你可以考虑在某个阶段以编程方式添加它。你甚至可以考虑做一种搜索扩展,其中非前缀的术语被扩展成一个查询或原始查询,一个增强的加权字段。在键入上面的内容时,我还记得你也可以为非前缀的术语实现自定义处理代码,也许这是一个很好的方法来扩展我的建议。有关详细信息,请参见:您所说的是,如果我将可搜索表达式
与附加查询一起使用
,则字段应位于可搜索表达式
内?在我的例子中,字段指向的路径不在可搜索表达式中,因此问题出在哪里?如何实现当用户搜索字符串(无约束)时,搜索需要在xpath集合中执行。在所有附加查询
约束之上?我通常会创建一个聚焦于所需路径的字段,并为此创建一个字段搜索约束,然后指示用户在搜索短语前面加上约束名称+冒号。。例如,“胰腺癌”
变成了标题栏:“胰腺癌”
。是的,我试图避免使用约束的方式,例如:)当search ws用于许多企业应用程序时,很难强制应用程序开发人员将此约束添加到他们的搜索字符串中,但当没有其他方法时,然后我们不得不假设你可以考虑在某个阶段以编程方式添加它。你甚至可以考虑做一种搜索扩展,其中非前缀的术语被扩展成一个查询或原始查询,一个增强的加权字段。在键入上面的内容时,我还记得你也可以为非前缀的术语实现自定义处理代码,也许这是一个很好的方法来扩展我的建议。详情请参阅:
<search:response snippet-format="snippet" total="0" start="1" page-length="10" xmlns:search="http://marklogic.com/appservices/search">
<search:plan>
<qry:query-plan xmlns:qry="http://marklogic.com/cts/query">
<qry:expr-trace>impl:apply-search(map:map(<map:map xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" .../>), "xdmp:plan", fn:false())</qry:expr-trace>
<qry:info-trace>Analyzing path for search: fn:collection()/es:envelope/es:raw/wos_dps:REC/wos_dps:static_data/wos_dps:summary/wos_dps:titles/wos_dps:title</qry:info-trace>
<qry:info-trace>Step 1 is searchable: fn:collection()</qry:info-trace>
<qry:info-trace>Step 2 is searchable: es:envelope</qry:info-trace>
<qry:info-trace>Step 3 is searchable: es:raw</qry:info-trace>
<qry:info-trace>Step 4 is searchable: wos_dps:REC</qry:info-trace>
<qry:info-trace>Step 5 is searchable: wos_dps:static_data</qry:info-trace>
<qry:info-trace>Step 6 is searchable: wos_dps:summary</qry:info-trace>
<qry:info-trace>Step 7 is searchable: wos_dps:titles</qry:info-trace>
<qry:info-trace>Step 8 is searchable: wos_dps:title</qry:info-trace>
<qry:info-trace>Path is fully searchable.</qry:info-trace>
<qry:info-trace>Gathering constraints.</qry:info-trace>
<qry:info-trace>Search query contributed 3 constraints: cts:and-query((cts:word-query("pancreatic cancer", ("case-insensitive","punctuation-insensitive","whitespace-insensitive","wildcarded","lang=en"), 1), cts:collection-query("OncoWatch"), cts:field-value-query("wos_doctype", ("Article", "Review"), ("lang=en"), 1)), ())</qry:info-trace>
<qry:partial-plan>
<qry:term-query weight="1">
<qry:key>17396426271722676659</qry:key>
</qry:term-query>
</qry:partial-plan>
<qry:partial-plan>
<qry:term-query weight="0">
<qry:key>16172058720999549713</qry:key>
<qry:annotation>collection(OncoWatch)</qry:annotation>
</qry:term-query>
</qry:partial-plan>
<qry:partial-plan>
<qry:or-two-queries>
<qry:term-query weight="1">
<qry:key>8492163112599871394</qry:key>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>10427204889894421302</qry:key>
</qry:term-query>
</qry:or-two-queries>
</qry:partial-plan>
<qry:info-trace>Executing search.</qry:info-trace>
<qry:ordering/>
<qry:final-plan>
<qry:and-query>
<qry:term-query weight="0">
<qry:key>3030157765137304984</qry:key>
<qry:annotation>descendant(doc-root(element(es:envelope),doc-kind(document)))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>14623301529635238289</qry:key>
<qry:annotation>descendant(element-child(es:envelope/es:raw))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>2513953156802156363</qry:key>
<qry:annotation>descendant(element-child(es:raw/wos_dps:REC))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>15620627614067983352</qry:key>
<qry:annotation>descendant(element-child(wos_dps:REC/wos_dps:static_data))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>14267880419025656818</qry:key>
<qry:annotation>descendant(element-child(wos_dps:static_data/wos_dps:summary))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>1256980818223445232</qry:key>
<qry:annotation>descendant(element-child(wos_dps:summary/wos_dps:titles))</qry:annotation>
</qry:term-query>
<qry:or-two-queries>
<qry:term-query weight="0">
<qry:key>7002325115516888131</qry:key>
<qry:annotation>element-child(wos_dps:titles/wos_dps:title)</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>14914226620346018347</qry:key>
<qry:annotation>link-child(descendant(element-child(wos_dps:titles/wos_dps:title)))</qry:annotation>
</qry:term-query>
</qry:or-two-queries>
<qry:term-query weight="1">
<qry:key>17396426271722676659</qry:key>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>16172058720999549713</qry:key>
<qry:annotation>collection(OncoWatch)</qry:annotation>
</qry:term-query>
<qry:or-two-queries>
<qry:term-query weight="1">
<qry:key>8492163112599871394</qry:key>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>10427204889894421302</qry:key>
</qry:term-query>
</qry:or-two-queries>
</qry:and-query>
</qry:final-plan>
<qry:info-trace>Selected 1264 fragments to filter</qry:info-trace>
<qry:result estimate="1264"/>
</qry:query-plan>
</search:plan>
<search:qtext>"pancreatic cancer"</search:qtext>
<search:metrics>
<search:query-resolution-time>PT0.183458S</search:query-resolution-time>
<search:total-time>PT0.186923S</search:total-time>
</search:metrics>
</search:response>
<search:plan xmlns:search="http://marklogic.com/appservices/search">
<qry:query-plan xmlns:qry="http://marklogic.com/cts/query">
<qry:expr-trace>impl:apply-search(map:map(<map:map xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" .../>), "xdmp:plan", fn:false())</qry:expr-trace>
<qry:info-trace>Analyzing path for search: fn:collection()/es:envelope/es:raw/wos_dps:REC/wos_dps:static_data/wos_dps:summary/wos_dps:titles/wos_dps:title</qry:info-trace>
<qry:info-trace>Step 1 is searchable: fn:collection()</qry:info-trace>
<qry:info-trace>Step 2 is searchable: es:envelope</qry:info-trace>
<qry:info-trace>Step 3 is searchable: es:raw</qry:info-trace>
<qry:info-trace>Step 4 is searchable: wos_dps:REC</qry:info-trace>
<qry:info-trace>Step 5 is searchable: wos_dps:static_data</qry:info-trace>
<qry:info-trace>Step 6 is searchable: wos_dps:summary</qry:info-trace>
<qry:info-trace>Step 7 is searchable: wos_dps:titles</qry:info-trace>
<qry:info-trace>Step 8 is searchable: wos_dps:title</qry:info-trace>
<qry:info-trace>Path is fully searchable.</qry:info-trace>
<qry:info-trace>Gathering constraints.</qry:info-trace>
<qry:info-trace>Search query contributed 2 constraints: cts:and-query((cts:word-query("pancreatic cancer", ("case-insensitive","punctuation-insensitive","whitespace-insensitive","wildcarded","lang=en"), 1), cts:collection-query("OncoWatch")), ())</qry:info-trace>
<qry:partial-plan>
<qry:term-query weight="1">
<qry:key>17396426271722676659</qry:key>
</qry:term-query>
</qry:partial-plan>
<qry:partial-plan>
<qry:term-query weight="0">
<qry:key>16172058720999549713</qry:key>
<qry:annotation>collection(OncoWatch)</qry:annotation>
</qry:term-query>
</qry:partial-plan>
<qry:info-trace>Executing search.</qry:info-trace>
<qry:ordering/>
<qry:final-plan>
<qry:and-query>
<qry:term-query weight="0">
<qry:key>3030157765137304984</qry:key>
<qry:annotation>descendant(doc-root(element(es:envelope),doc-kind(document)))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>14623301529635238289</qry:key>
<qry:annotation>descendant(element-child(es:envelope/es:raw))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>2513953156802156363</qry:key>
<qry:annotation>descendant(element-child(es:raw/wos_dps:REC))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>15620627614067983352</qry:key>
<qry:annotation>descendant(element-child(wos_dps:REC/wos_dps:static_data))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>14267880419025656818</qry:key>
<qry:annotation>descendant(element-child(wos_dps:static_data/wos_dps:summary))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>1256980818223445232</qry:key>
<qry:annotation>descendant(element-child(wos_dps:summary/wos_dps:titles))</qry:annotation>
</qry:term-query>
<qry:or-two-queries>
<qry:term-query weight="0">
<qry:key>7002325115516888131</qry:key>
<qry:annotation>element-child(wos_dps:titles/wos_dps:title)</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>14914226620346018347</qry:key>
<qry:annotation>link-child(descendant(element-child(wos_dps:titles/wos_dps:title)))</qry:annotation>
</qry:term-query>
</qry:or-two-queries>
<qry:term-query weight="1">
<qry:key>17396426271722676659</qry:key>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>16172058720999549713</qry:key>
<qry:annotation>collection(OncoWatch)</qry:annotation>
</qry:term-query>
</qry:and-query>
</qry:final-plan>
<qry:info-trace>Selected 1337 fragments to filter</qry:info-trace>
<qry:result estimate="1337"/>
</qry:query-plan>
</search:plan>