首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用search:search进行连接

使用search:search进行连接
EN

Stack Overflow用户
提问于 2018-06-18 13:32:15
回答 1查看 157关注 0票数 0

在使用search:search时,应该如何连接查询?

我在在MarkLogic服务器内部中看到,一个人可以使用‘猎枪或’(分散查询),但它不使用‘搜索:搜索’。在消息 at 'MarkLogic Dev‘邮件列表中,我发现理论上这可以通过搜索约束来完成,但我不知道它到底应该如何工作。

我的用例如下:

  1. 我使用MarkLogic Java客户端API构造我的查询。如果可能,我希望避免使用xqy扩展。
  2. 我有两种实体(例如,图书和作者),我可能想要做这样的查询:给我1980年出版的由巴西作者撰写的书。也就是说,我想对两个实体进行过滤,并加入结果,而不对数据进行反错误处理。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 19:46:33

正确的是,Search没有为散弹枪OR提供声明性接口。

如果您使用的是MarkLogic 9(特别是最新版本中的性能增强),您可能会发现Optic满足您的需求:

http://docs.marklogic.com/guide/java/OpticJava

Java不需要猎枪或猎枪,而是为Optic查询提供了一个流畅的构建器,在实体之间直接连接。

如果您正在使用MarkLogic的早期版本,或者Optic由于某些原因不能满足您的要求,您可以使用一个值查询来检索第一个请求中与查询匹配的所有巴西作者的姓名,从而完全在Java中执行猎枪或查询:

83836

然后,使用检索到的值构造成查询,检索这些作者在第二个请求中编写的书籍:

70572

这可以像构造一个名称值数组并将数组传递到单个范围查询一样简单:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#range-com.marklogic.client.query.StructuredQueryBuilder.RangeIndex-java.lang.String-java.lang.String:A-com.marklogic.client.query.StructuredQueryBuilder.Operator-java.lang.Object...-

这种基于Java的猎枪或查询方法的成本包括两次网络往返:一次是从服务器获取名称列表到Java客户端,另一次是获取文档。

为了更好地使用猎枪OR,请在XQuery或服务器端JavaScript (SJS)模块的MarkLogic enode上创建一个模块,该模块接受查询条件并执行猎枪或查询,然后执行文档查询。然后,您可以通过调用来执行enode模块:

84134

或具有资源服务分机:

27702

希望这有帮助,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50910717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档