gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:08:41 25 4
gpt4 key购买 nike

已创建以下元素范围索引:标量类型: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com