search:search 在 marklogic 中显示的意外行为
Unexpected behavior shown by search:search in marklogic
我正在使用 search:search
搜索以下类型的结构:
search:search(
"",
<options>
<additional-query>
{
cts:and-query((
cts:collection-query("A"),
cts:not-query(cts:collection-query("B")),
cts:not-query(cts:collection-query("C")),
cts:and-query((
cts:element-value-query(
xs:QName("uri"),
cts:search(collection("A"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("B"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("C"),cts:word-query("Hello"))/fn:base-uri()
)
)/fn:base-uri()
)
)/fn:base-uri()
),
dls:documents-query()
))
))
}
</additional-query>
</options>,1,10)
它给出了 0 个结果。
但是,如果我尝试这样做,它会给出所需的结果
let $a :=
cts:search(collection("A"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("B"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("C"),cts:word-query("Hello"))/fn:base-uri()
)
)/fn:base-uri()
)
)/fn:base-uri()
return
search:search(
"",
<options>
<additional-query>
{
cts:and-query((
cts:collection-query("A"),
cts:not-query(cts:collection-query("B")),
cts:not-query(cts:collection-query("C")),
cts:and-query((
cts:element-value-query(
xs:QName("uri"),
$a
),
dls:documents-query()
))
))
}
</additional-query>
</options>, 1, 10)
解决了部分section被取出后传入search:search
选项的问题。
请查看并提供帮助
您不能直接在 search:options
中嵌入 cts:query
。
相反,尝试:
<search:options>
<search:additional-query>{...your cts:query here ...}</search:additional-query>
</search:options>
有关详细信息,请参阅:
http://docs.marklogic.com/guide/rest-dev/appendixb#id_98507
此外,如果您想使用子查询检索值以用作条件,您应该在作为值源和查询目标的元素上创建范围索引,并使用 cts:values()
词典查找。欲了解更多信息,请参阅:
http://docs.marklogic.com/cts:values
希望对您有所帮助,
我正在使用 search:search
搜索以下类型的结构:
search:search(
"",
<options>
<additional-query>
{
cts:and-query((
cts:collection-query("A"),
cts:not-query(cts:collection-query("B")),
cts:not-query(cts:collection-query("C")),
cts:and-query((
cts:element-value-query(
xs:QName("uri"),
cts:search(collection("A"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("B"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("C"),cts:word-query("Hello"))/fn:base-uri()
)
)/fn:base-uri()
)
)/fn:base-uri()
),
dls:documents-query()
))
))
}
</additional-query>
</options>,1,10)
它给出了 0 个结果。
但是,如果我尝试这样做,它会给出所需的结果
let $a :=
cts:search(collection("A"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("B"),
cts:element-value-query(xs:QName("uri"),
cts:search(collection("C"),cts:word-query("Hello"))/fn:base-uri()
)
)/fn:base-uri()
)
)/fn:base-uri()
return
search:search(
"",
<options>
<additional-query>
{
cts:and-query((
cts:collection-query("A"),
cts:not-query(cts:collection-query("B")),
cts:not-query(cts:collection-query("C")),
cts:and-query((
cts:element-value-query(
xs:QName("uri"),
$a
),
dls:documents-query()
))
))
}
</additional-query>
</options>, 1, 10)
解决了部分section被取出后传入search:search
选项的问题。
请查看并提供帮助
您不能直接在 search:options
中嵌入 cts:query
。
相反,尝试:
<search:options>
<search:additional-query>{...your cts:query here ...}</search:additional-query>
</search:options>
有关详细信息,请参阅:
http://docs.marklogic.com/guide/rest-dev/appendixb#id_98507
此外,如果您想使用子查询检索值以用作条件,您应该在作为值源和查询目标的元素上创建范围索引,并使用 cts:values()
词典查找。欲了解更多信息,请参阅:
http://docs.marklogic.com/cts:values
希望对您有所帮助,