0

我正在使用 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 都是空字符串时,它不会显示任何结果。当用户没有输入任何输入时,我想显示所有结果。我怎样才能做到这一点?

4

2 回答 2

4

更明确地说,您可以编写如下查询:

    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几乎可以将表达式放在任何地方的想法。有时将其视为三元逻辑会有所帮助。

于 2012-04-24T18:54:08.917 回答
1

要获得所有结果,您必须将当前替换$querycts:and-query(()). 顺便说一句, Acts:or-query(())也可以工作。

于 2012-04-24T14:41:16.090 回答