在使用search:search时,应该如何连接查询?
我在在MarkLogic服务器内部中看到,一个人可以使用‘猎枪或’(分散查询),但它不使用‘搜索:搜索’。在消息 at 'MarkLogic Dev‘邮件列表中,我发现理论上这可以通过搜索约束来完成,但我不知道它到底应该如何工作。
我的用例如下:
发布于 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
希望这有帮助,
https://stackoverflow.com/questions/50910717
复制相似问题