使用Search API,我必须在一个关键元素的2个不同目录中加入和搜索两个XML文档,并根据第二个XML中的元素对结果进行排序。
我已经在XML中定义了搜索选项,但对要搜索的元素有限制,并使用排序运算符选项来定义排序顺序。
ML版本为8(因此没有Optic API),并且没有选择在摄取过程中和现有系统一样对XML进行非规范化。
URI:/employee/123.xml
<employee>
<empid>123</empid>
<firstname>John</firstname>
<lastname>Peter</lastname>
<dept>sales</sales>
</employee>
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
答案 0 :(得分:0)
Search API的粒度太粗略,无法轻松进行这样的连接。我建议向下钻取一个级别并使用cts:search
来执行“ shot弹枪”查询,这与关系数据库联接的工作原理非常相似。
看看this section in the indexing documentation:
在XQuery代码中,获取一组与第一个查询匹配的ID,然后供稿 设置为第二个查询作为约束。使用范围的能力 两端的索引使工作高效。