使用Search API进行跨文档搜索和排序

时间:2019-04-30 06:49:01

标签: marklogic

使用Search API,我必须在一个关键元素的2个不同目录中加入和搜索两个XML文档,并根据第二个XML中的元素对结果进行排序。

我已经在XML中定义了搜索选项,但对要搜索的元素有限制,并使用排序运算符选项来定义排序顺序。

ML版本为8(因此没有Optic API),并且没有选择在摄取过程中和现有系统一样对XML进行非规范化。

样本文件A

URI:/employee/123.xml

<employee>
    <empid>123</empid>
    <firstname>John</firstname>
    <lastname>Peter</lastname>
    <dept>sales</sales>
</employee>

样本文件B

URI:/contrib/123.xml

<contribution>
    <empid>123</empid>
    <count>2000</count>
<contribution>

search:search(searchgrmr,searchoptions,startidx,endidx);

我想要实现类似于我们在下面的sql中实现的功能

select * from a join b on a.col1 = b.col1 order by b.col2

1 个答案:

答案 0 :(得分:0)

Search API的粒度太粗略,无法轻松进行这样的连接。我建议向下钻取一个级别并使用cts:search来执行“ shot弹枪”查询,这与关系数据库联接的工作原理非常相似。

看看this section in the indexing documentation

  

在XQuery代码中,获取一组与第一个查询匹配的ID,然后供稿   设置为第二个查询作为约束。使用范围的能力   两端的索引使工作高效。