Rav*_*avi 2 marklogic marklogic-8
我正在编写Rest Extension进行搜索,这将获取在JSON嵌套文档中搜索的参数.我能够通过编写自定义约束来完成此操作,然后使用此自定义约束解析搜索文本并构建查询.
我们也可以为排序顺序做同样的事情吗?顺便说一句,我的意思是我根据传递的参数为搜索选项构建排序顺序.
我在其中一个例子中看到,执行以下操作
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)
Run Code Online (Sandbox Code Playgroud)
但即便在这里也有一些硬编码要对哪些字段进行排序.我想做自定义约束,在运行时我确定排序顺序列.
这可能吗 ??
嗯,你给出的例子,你提到它有点硬编码.在这种状态下,它只是XML.您可以在此步骤之前使用编程逻辑来决定元素和排序顺序,并相应地构建XML.下面的小例子使标题元素的升序或降序排序.这个小例子应该可以帮助您了解您可能在更大范围内做些什么.
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |