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