具有复杂逻辑或替代的自定义约束

时间:2016-06-08 19:49:08

标签: search marklogic marklogic-8

有没有办法创建自定义约束,其中正确的部分可以包含复杂的逻辑?即。

name:(phil OR tom)

在我的函数中,当我得到$ right的一面时,整个值已被简化为所有文本的简单串联字符串,即

<cts:word-query xmlns:cts="http://marklogic.com/cts">
  <cts:text>phil tom</cts:text>
</cts:word-query>

我要做的是获取一个已解析的查询,然后将我自己的添加内容添加到已解析的查询中。所以我希望有一些方法可以让$ right参数像是

<cts:or-query xmlns:cts="http://marklogic.com/cts">
  <cts:word-query>
    <cts:text>phil</cts:text>
  </cts:word-query>
  <cts:word-query>
    <cts:text>tom</cts:text>
  </cts:word-query>
</cts:or-query>

我想获取查询的输出结果,并使用另一个查询进行扩展以获得实际结果。即我有name约束,限制搜索到各种名称字段。在找到匹配的人之后,我想将结果转换为匹配人员的层次结构,可能是2级。这似乎没有意义作为转换结果或自定义约束。这只是一个自定义REST端点吗?我希望能够使用已经内置到标准搜索端点的分页。

1 个答案:

答案 0 :(得分:4)

有些想法浮现在脑海中。目前你最好把它写成:

"abc      xy   ----     xcv     "

除此之外,cts:parse函数提供的支持比现在运行REST api的search:parse更复杂。

使用自定义约束时,您可以控制如何将其发送到REST API,请考虑将其作为custom-constraint-query发送到structuredQuery。这允许您发送未解析的内容,并在约束内进行解析。

HTH!