我用这个表达式来搜索文件
search:search(
'(content:"value of imports")',
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="content">
<element-query ns="" name="content" />
</constraint>
<additional-query>{cts:collection-query("document-binary")}</additional-query>
</options>
)
结果
<search:response snippet-format="snippet" total="16" start="1" page-length="10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:search="http://marklogic.com/appservices/search">
<search:qtext>(content:"value of imports")</search:qtext>
<search:metrics>
<search:query-resolution-time>PT0.319222S</search:query-resolution-time>
<search:facet-resolution-time>PT0.000124S</search:facet-resolution-time>
<search:snippet-resolution-time>PT0S</search:snippet-resolution-time>
<search:total-time>PT0.319721S</search:total-time>
</search:metrics>
</search:response>
如果我只在搜索表达式
中留下一个单词,搜索将会正常工作content:"value"
答案 0 :(得分:1)
total
是未经过滤的结果数量估算值。但是,默认情况下会过滤结果。如果结果与计数不匹配,您可以尝试使用unfiltered
选项查看是否是原因。您还可以尝试使用xdmp:query-trace
或search:search
cts:uris
选项来查看正在发生的事情。您还可以使用value of imports
查看未过滤搜索返回的文档URI。
有关已过滤与未过滤搜索的详细信息,请参阅return-plan
和https://docs.marklogic.com/guide/search-dev/search-api以及https://docs.marklogic.com/guide/search-dev/count_estimate
在这种特殊情况下,过滤和未过滤结果之间的差异可能是由于快速短语索引的工作方式。您的短语value of
将变为双字词of imports
和双字词{{1}}。可能有16个文件包含这两个术语。但这并不意味着它们中的任何一个都匹配整个三个单词的短语。如果是这样,索引查找仍然匹配16,但过滤找不到匹配。
答案 1 :(得分:0)
元素查询约束与其他元素的容器匹配:
如果要匹配元素的文本内容,请尝试使用值或单词查询:
如:
search:search(
'(content:"value of imports")',
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="content">
<value>
<element ns="" name="content" />
</value>
</constraint>
<additional-query>{cts:collection-query("document-binary")}</additional-query>
</options>)
如果document-binary collection标记了二进制文档,我希望如此 空结果集,因为附加查询是和相关的 其他查询。
希望有帮助,
Erik Hennum