cts:value- 共现和 cts:query 选项
cts:value-co-occurrences and cts:query option
我正在尝试查找对给定搜索字符串使用给定文档 属性 的 cts:value-co-occurrences
,当我进行常规搜索时,我得到 546 个结果,但是当我使用 cts:value-同现,我只得到3个文件..下面是我的代码
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace prop = "http://marklogic.com/xdmp/property";
declare namespace meta = "http://ir.abbivenet.com/content-repo/metadata";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
import module namespace functx = "http://www.functx.com" at "/MarkLogic/functx/functx-1.0-doc-2007-01.xqy";
let $q := "(TNF)"
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix=""/>
</constraint>
<constraint name="properties">
<properties />
</constraint>
<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-facets>false</return-facets>
<return-values>false</return-values>
<return-constraints>false</return-constraints>
<return-frequencies>false</return-frequencies>
<return-qtext>false</return-qtext>
<search-option>unfaceted</search-option>
<search-option>score-simple</search-option>
</options>
let $start := 1
let $page-length :=1000000
let $query-original := cts:query(search:parse($q, $options))
let $m := cts:value-co-occurrences(
cts:element-reference(xs:QName('meta:id')),
cts:uri-reference(),
('map','properties'), $query-original)
return $m
这 return 只有 3 个结果.. 但如果我执行以下操作,我会得到 546 个结果
let $result := search:search($q, $options, $start, $page-length)
return $result
所有文档都有 属性 <id>
,所以我不明白为什么会有所不同。我知道我正在使用 map
, return 或应该 return 独特的 <id>
键.. 如果是这样的话我应该得到 241 个结果而不是 3.
这听起来像是 search:search
只查看文档片段,而您的 cts:values
和 cts:value-co-occurrences
调用都只查看属性片段。
如果 $query(-original)
是为了 运行 针对文档片段,请将其包装在 cts:document-fragment-query
中。如果你想让它 运行 反对属性片段,然后将它包装在 cts:properties-fragment-query
中(只是为了确定)。
由于您使用的是 search:parse
,因此您还可以针对特定的 fragment-scope
将其配置为 运行。您可以在选项的顶层指定该选项,但也可以在约束内指定。
HTH!
我正在尝试查找对给定搜索字符串使用给定文档 属性 的 cts:value-co-occurrences
,当我进行常规搜索时,我得到 546 个结果,但是当我使用 cts:value-同现,我只得到3个文件..下面是我的代码
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace prop = "http://marklogic.com/xdmp/property";
declare namespace meta = "http://ir.abbivenet.com/content-repo/metadata";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
import module namespace functx = "http://www.functx.com" at "/MarkLogic/functx/functx-1.0-doc-2007-01.xqy";
let $q := "(TNF)"
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix=""/>
</constraint>
<constraint name="properties">
<properties />
</constraint>
<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-facets>false</return-facets>
<return-values>false</return-values>
<return-constraints>false</return-constraints>
<return-frequencies>false</return-frequencies>
<return-qtext>false</return-qtext>
<search-option>unfaceted</search-option>
<search-option>score-simple</search-option>
</options>
let $start := 1
let $page-length :=1000000
let $query-original := cts:query(search:parse($q, $options))
let $m := cts:value-co-occurrences(
cts:element-reference(xs:QName('meta:id')),
cts:uri-reference(),
('map','properties'), $query-original)
return $m
这 return 只有 3 个结果.. 但如果我执行以下操作,我会得到 546 个结果
let $result := search:search($q, $options, $start, $page-length)
return $result
所有文档都有 属性 <id>
,所以我不明白为什么会有所不同。我知道我正在使用 map
, return 或应该 return 独特的 <id>
键.. 如果是这样的话我应该得到 241 个结果而不是 3.
这听起来像是 search:search
只查看文档片段,而您的 cts:values
和 cts:value-co-occurrences
调用都只查看属性片段。
如果 $query(-original)
是为了 运行 针对文档片段,请将其包装在 cts:document-fragment-query
中。如果你想让它 运行 反对属性片段,然后将它包装在 cts:properties-fragment-query
中(只是为了确定)。
由于您使用的是 search:parse
,因此您还可以针对特定的 fragment-scope
将其配置为 运行。您可以在选项的顶层指定该选项,但也可以在约束内指定。
HTH!