Xquery 如何使用cts:search获取所有结果?

Xquery 如何使用cts:search获取所有结果?,xquery,marklogic,Xquery,Marklogic,我正在使用cts:search,如下所示:- let $query := cts:or-query(( cts:field-word-query( "Assignor Name", $assignorName ), cts:field-word-query( "Assignee Name", $assigneeName )

我正在使用cts:search,如下所示:-

let $query :=
         cts:or-query((
            cts:field-word-query(
              "Assignor Name", $assignorName
            ), 
            cts:field-word-query(
              "Assignee Name", $assigneeName
            )
        )) 
for $patent in cts:search(fn:doc(), $query)[1 to 10]
return $patent

其中,$assignorName和$assigneeName是来自用户的输入。但是当$assignorName和$assigneeName都是空字符串时,它不会显示任何结果。我想在用户未输入任何输入时显示所有结果。如何实现这一点?

要获得所有结果,必须将当前的
$query
替换为
cts:和query(())
。顺便说一下,
cts:或查询(())
也可以工作


要获得所有结果,必须将当前的
$query
替换为
cts:and query(())
。顺便说一下,
cts:或查询(())
也可以工作


更明确地说,您可以这样编写查询:

    cts:or-query((
        if (not($assignorName)) then () else cts:field-word-query(
          "Assignor Name", $assignorName), 
        if (not($assigneeName)) then () else cts:field-word-query(
          "Assignee Name", $assigneeName) ))

需要一段时间才能习惯这样的想法,即可以将
if-then-else
表达式放在几乎任何地方。有时,将其视为三元逻辑会有所帮助。

更明确地说,您可以这样编写查询:

    cts:or-query((
        if (not($assignorName)) then () else cts:field-word-query(
          "Assignor Name", $assignorName), 
        if (not($assigneeName)) then () else cts:field-word-query(
          "Assignee Name", $assigneeName) ))
需要一段时间才能习惯这样的想法,即可以将
if-then-else
表达式放在几乎任何地方。有时,将其视为三元逻辑会有所帮助