Marklogic DMSDK 转换模块?
Marklogic DMSDK Transform Module?
Usecase : 我想在数据库中获取我的文档的所有内容并将其存储在一个 zip 文件中。
我使用 ml-java-util
将内容转换为 zip 文件。我的服务器端转换模块逻辑如下:
- 我进入每个文档并使用节点 Xpath 仅提取必填字段。
- 但是当我执行时,它会在我打开时创建一个 zip 文件,它有一组基于 Uri 名称和提取内容的文件。它不是将所有文件内容合并为一个文件,而是为每个 URI 创建新文件。
如何覆盖该行为?我希望所有文档中的所有内容(i.e.extracted 值)都在一个也转换为 zip 的文件中。
尝试应用 For
循环,但认为它没有用,因为函数本身一个接一个地获取 uri(即 context.uri)。
感谢任何帮助。
谢谢
可以使用ExportToWriterListener! ExportToWriterListener 导出 QueryBatcher 检索到的所有内容并写入文件。
DatabaseClient client = DatabaseClientFactory.newClient("localhost", 8012,
new DatabaseClientFactory.DigestAuthContext("admin", "admin"));
DataMovementManager moveMgr = client.newDataMovementManager();
ServerTransform transform = new ServerTransform("transformName");
File outputFile = new File("output.txt"); // pass in your file here
String collection = "customers";
StructuredQueryDefinition query = new StructuredQueryBuilder().collection(collection); // Substitute your query here
try (FileWriter writer = new FileWriter(outputFile)) {
ExportToWriterListener exportListener = new ExportToWriterListener(writer)
.withRecordSuffix("\n")
.withTransform(transform) // pass in your Server Transform here
.onGenerateOutput(
record -> {
String contents = record.getContentAs(String.class);
return contents; // return the content as it is which is the server transformed documents' content
}
);
QueryBatcher queryJob =
moveMgr.newQueryBatcher(query)
.withThreadCount(5)
.withBatchSize(10)
.onUrisReady(exportListener)
.onQueryFailure( throwable -> throwable.printStackTrace() );
moveMgr.startJob( queryJob );
queryJob.awaitCompletion();
moveMgr.stopJob(queryJob);
}
然后您可以从文件中创建一个 zip。
Usecase : 我想在数据库中获取我的文档的所有内容并将其存储在一个 zip 文件中。
我使用 ml-java-util
将内容转换为 zip 文件。我的服务器端转换模块逻辑如下:
- 我进入每个文档并使用节点 Xpath 仅提取必填字段。
- 但是当我执行时,它会在我打开时创建一个 zip 文件,它有一组基于 Uri 名称和提取内容的文件。它不是将所有文件内容合并为一个文件,而是为每个 URI 创建新文件。
如何覆盖该行为?我希望所有文档中的所有内容(i.e.extracted 值)都在一个也转换为 zip 的文件中。
尝试应用 For
循环,但认为它没有用,因为函数本身一个接一个地获取 uri(即 context.uri)。
感谢任何帮助。
谢谢
可以使用ExportToWriterListener! ExportToWriterListener 导出 QueryBatcher 检索到的所有内容并写入文件。
DatabaseClient client = DatabaseClientFactory.newClient("localhost", 8012,
new DatabaseClientFactory.DigestAuthContext("admin", "admin"));
DataMovementManager moveMgr = client.newDataMovementManager();
ServerTransform transform = new ServerTransform("transformName");
File outputFile = new File("output.txt"); // pass in your file here
String collection = "customers";
StructuredQueryDefinition query = new StructuredQueryBuilder().collection(collection); // Substitute your query here
try (FileWriter writer = new FileWriter(outputFile)) {
ExportToWriterListener exportListener = new ExportToWriterListener(writer)
.withRecordSuffix("\n")
.withTransform(transform) // pass in your Server Transform here
.onGenerateOutput(
record -> {
String contents = record.getContentAs(String.class);
return contents; // return the content as it is which is the server transformed documents' content
}
);
QueryBatcher queryJob =
moveMgr.newQueryBatcher(query)
.withThreadCount(5)
.withBatchSize(10)
.onUrisReady(exportListener)
.onQueryFailure( throwable -> throwable.printStackTrace() );
moveMgr.startJob( queryJob );
queryJob.awaitCompletion();
moveMgr.stopJob(queryJob);
}
然后您可以从文件中创建一个 zip。