Xquery 如何使用cts:search获取所有结果?
我正在使用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 )
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
表达式放在几乎任何地方。有时,将其视为三元逻辑会有所帮助