gpt4 book ai didi

java - 如何在 nuxeo 中使用属性参数进行查询

转载 作者:行者123 更新时间:2023-11-30 10:19:16 25 4
gpt4 key购买 nike

我想使用 nuxeo 8.10 从我的 Java 应用中提取“动态”属性来发出请求。

这是我的 NuxeoDocument 的声明:

    <schema name="TestDocumentProperties" src="data/TestDocumentProperties.xsd" prefix="test" />
<doctype name="TestDocument" extends="Document">
<schema name="dublincore"/>
<schema name="TestDocumentProperties"/>
</doctype>

有架构:

<xs:schema ...>  
<xs:element name="summary" type="xs:string"/>
<xs:element name="content" type="xs:string"/>
</xs:schema>

我的 Nuxeo 服务器有一个“获取”请求:

https:xxx/nuxeo/site/api/v1/search/lang/NXQL/execute?query=SELECT * FROM Document WHERE ecm:fulltext = 'test'&properties=TestDocumentProperties, dublincore

当我直接从浏览器执行此请求时,结果包含“dublincore”和“TestDocumentProperties”的所有属性:

{
"entity-type": "document",
"type": "TestDocument",
...
"properties": {
"test:summary": "test text to search in summary",
"test:content": "test text to search in content",
"dc:description": null,
"dc:language": null,
"dc:coverage": null,
"dc:valid": null,
"dc:creator": "xxx",
"dc:modified": "2017-12-13T16:28:38.44Z",
...
},...
}

因此,我想使用相同的参数从我的 Java 应用程序执行 nuxeo nxql 请求。之前,我只执行来 self 的 java 应用程序的请求,没有使用此代码的“属性”参数:

return this.nuxeoClient.repository().query("SELECT * FROM Document WHERE ecm:fulltext = 'test'");

但是使用存储库中的“查询”方法,无法指定要获取的属性。所以,今天,我尝试使用这段代码:

    Map<String, Object> parameters = new HashMap<>();
parameters.put("query", "SELECT * FROM Document WHERE ecm:fulltext = 'test'");
parameters.put("properties", "TestDocumentProperties, dublincore");
return this.nuxeoClient.automation("Repository.Query").parameters(parameters).execute();

不幸的是,结果没有正确获取,我的响应中没有“dublincore”属性,但我有“TestDocumentProperties”。如果我删除获取属性参数列表中的“TestDocumentProperties”,则响应没有变化...

你能帮我更正这段代码或给我一个替代方案吗?

谢谢

最佳答案

根据nuxeo doc ,您可以使用 setHeader(Constants.HEADER_NX_SCHEMAS) 方法选择要返回的模式:

return this.nuxeoClient.setHeader(Constants.HEADER_NX_SCHEMAS, "TestDocumentProperties,dublincore").automation("Repository.Query").parameters(parameters).execute();

对于属性。如果我没记错的话,你可以设置特定的属性来返回:

parameters.put("properties", "dc:title,dc:description");

或者您可能需要这样做:

import org.nuxeo.ecm.automation.client.model.Document;
// Instantiate a new Document with the simple constructor
Document document = new Document("myDocument", "File");
document.set("dc:title", "My File");
document.set("dc:description", "My Description");
parameters.put("properties", document);

后面这个我不太清楚,希望对你有帮助。

关于java - 如何在 nuxeo 中使用属性参数进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48704196/

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