java - 在 MarkLogic 中使用客户端 Java API 进行范围结构化查询

标签 java marklogic nosql

已创建以下元素范围索引: 标量类型:unsignedLong,本地名称:数字,

我正在运行以下代码:

    String options =
            "<search:options " +
                    "xmlns:search='http://marklogic.com/appservices/search'>" +
                "<search:constraint name='number'>" +
                    "<search:range type='xs:unsignedLong'>" +
                        "<search:element name='number' ns=''/>" +
                    "</search:range>" +
                "</search:constraint>" +
            "</search:options>";

    databaseClient.newServerConfigManager()
        .newQueryOptionsManager().writeOptions("myopt", new StringHandle(options));

    JSONDocumentManager jsonDocumentManager = 
                                     databaseClient.newJSONDocumentManager();

    for (int i = 0; i < 10; i++) {
        jsonDocumentManager.write("/somepath/"+ i +".json", 
                                 new StringHandle("{\"number\": \""+i+"\"}"));
    }


    QueryDefinition queryDefinition = new StructuredQueryBuilder()
        .rangeConstraint("number", StructuredQueryBuilder.Operator.GT, "5");
    queryDefinition.setOptionsName("myopt");

    StringHandle searchHandle = databaseClient.newQueryManager()
        .search(queryDefinition, new StringHandle());
    System.out.println(searchHandle.get());

我希望获得数字大于 5 的文档,但我得到的搜索结果为空。也许我错过了什么?

我正在使用 MarkLogic 服务器 7.0、client-api-java 2.0.5。

谢谢赫利布

更新

我在另一台机器上运行类似的代码,它工作正常。现在尝试找出差异

最佳答案

该代码运行的环境是否可能正在运行 MarkLogic 8?

在 MarkLogic 7 上,JSON 作为 XML 保存在特殊的命名空间中。您可以使用该命名空间定义范围索引:

http://docs.marklogic.com/7.0/guide/rest-dev/search#id_95526

然后,使用 json-key 而不是 element 指定范围约束:

<search:json-key>number</search:json-key>

在 MarkLogic 8 中,JSON 以 JSON 形式保存,因此您无需使用命名空间定义索引,并使用 json-property 而不是 json-key。

希望有帮助,

关于java - 在 MarkLogic 中使用客户端 Java API 进行范围结构化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619777/

相关文章:

java - 将 null 传递给 java 中的重载方法 |重载的变量是Exception类型

java - ClassCastException:AdView 错误地转换为 EditText

python-2.7 - MarkLogic/Python 查询仅搜索一个文件

sql - 带有 SSTable 附加二级索引的 Cassandra 与关系数据库

python - Python DBM 真的很快吗?

java - 弱引用 get() 方法的安全性如何? (安卓,异步任务)

java - 在状态通知上放置按钮

rest - 将 SOAP UI 用于 Marklogic SPARQL REST API 时出现问题

javascript - Marklogic 9 中奇怪的 xdmp.eval() toObject() 问题

mysql - MongoDB 高存储大小