搜索:search()不返回任何片段,但/ search:response / @ total大于零

时间:2014-09-08 10:44:09

标签: marklogic

我用这个表达式来搜索文件

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"

2 个答案:

答案 0 :(得分:1)

total是未经过滤的结果数量估算值。但是,默认情况下会过滤结果。如果结果与计数不匹配,您可以尝试使用unfiltered选项查看是否是原因。您还可以尝试使用xdmp:query-tracesearch:search cts:uris选项来查看正在发生的事情。您还可以使用value of imports查看未过滤搜索返回的文档URI。

有关已过滤与未过滤搜索的详细信息,请参阅return-planhttps://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