Marklogic Xquery搜索选项中的自定义排序顺序
我正在为搜索编写Rest扩展,这将在JSON嵌套文档中的何处搜索参数。我可以通过编写一个自定义约束来实现这一点,然后使用这个自定义约束解析搜索文本并构建查询 我们可以对分拣顺序也做同样的操作吗?顺便说一下,我的意思是,我根据传递的参数为搜索选项建立排序顺序 我在其中一个示例中看到了,其中Marklogic Xquery搜索选项中的自定义排序顺序,marklogic,marklogic-8,Marklogic,Marklogic 8,我正在为搜索编写Rest扩展,这将在JSON嵌套文档中的何处搜索参数。我可以通过编写一个自定义约束来实现这一点,然后使用这个自定义约束解析搜索文本并构建查询 我们可以对分拣顺序也做同样的操作吗?顺便说一下,我的意思是,我根据传递的参数为搜索选项建立排序顺序 我在其中一个示例中看到了,其中 let $options := <search:options> <search:operator name="sort"> <search:state name="r
let $options :=
<search:options>
<search:operator name="sort">
<search:state name="relevance">
<search:sort-order>
<search:score/>
</search:sort-order>
</search:state>
<search:state name="year">
<search:sort-order direction="descending" type="xs:gYear"
collation="">
<search:attribute ns="" name="year"/>
<search:element ns="http://marklogic.com/wikipedia"
name="nominee"/>
</search:sort-order>
<search:sort-order>
<search:score/>
</search:sort-order>
</search:state>
</search:operator>
</search:options>
return
search:search("lange sort:year", $options)
let$选项:=
返回
搜索:搜索(“lange排序:年份,$options)
但即使在这里,也有一些硬编码来对字段进行排序。我想做一些类似于自定义约束的事情,在运行时确定排序顺序列
这可能吗???好吧,你举的例子,你提到它是硬编码的。在这种情况下,它只是XML。在此步骤之前,您可以使用编程逻辑来决定元素和排序顺序,并相应地构建XML。下面的小示例对title元素进行升序或降序排序。这个小小的例子可以帮助你理解在更大范围内你可能会做什么
let $sort-direction := "descending"
let $options :=
<search:options>
<search:operator name="sort">
<search:state name="relevance">
<search:sort-order>
<search:score/>
</search:sort-order>
</search:state>
<search:state name="year">
<search:sort-order direction="{$sort-direction}" type="xs:gYear"
collation="">
<search:attribute ns="" name="year"/>
<search:element ns="http://marklogic.com/wikipedia"
name="nominee"/>
</search:sort-order>
<search:sort-order>
<search:score/>
</search:sort-order>
</search:state>
</search:operator>
</search:options>
return
search:search("lange sort:year", $options)
let$sort direction:=“递减”
让$options:=
返回
搜索:搜索(“lange排序:年份,$options)
有关指定动态搜索选项的更多信息,请参阅。这使您的中间层能够更好地控制搜索过程。