【问题标题】:How to get all results with cts:search?如何使用 cts:search 获取所有结果?
【发布时间】:2012-04-24 14:23:52
【问题描述】:

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

【问题讨论】:

    标签: xquery marklogic


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      HTH!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 2017-11-05
        • 1970-01-01
        相关资源
        最近更新 更多