如何用cts获得所有结果:搜索?

时间:2012-04-24 14:23:52

标签: xquery marklogic

我正在使用cts:像这样搜索: -

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

2 个答案:

答案 0 :(得分: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表达式。有时将其视为三元逻辑会有所帮助。

答案 1 :(得分:1)

要获得所有结果,您必须将当前$query替换为cts:and-query(())。顺便说一下,cts:or-query(())也可能有用。

HTH!