openspg
openspg copied to clipboard
openspg 和 tugraph 的使用
我在docker compose 文件中配置了,在创建知识库的时候,都是默认走向neo4j,请问是完全不支持tugraph 了吗?
我在docker compose 文件中配置了,在创建知识库的时候,都是默认走向neo4j,请问是完全不支持tugraph 了吗?
GraphController.writerGraph()里写死去neo4j了,这块代码可以尝试自己修改,把 Neo4jSinkWriter.writeToNeo4j() 换成GraphStoreSinkWriter.write()
具体代码如下:
@RequestMapping(value = "/writerGraph", method = RequestMethod.POST)
@ResponseBody
public HttpResult<Boolean> writerGraph(@RequestBody WriterGraphRequest request) {
return HttpBizTemplate.execute2(
new HttpBizCallback<Boolean>() {
@Override
public void check() {
AssertUtils.assertParamObjectIsNotNull("request", request);
AssertUtils.assertParamObjectIsNotNull("projectId", request.getProjectId());
AssertUtils.assertParamObjectIsNotNull("operation", request.getOperation());
AssertUtils.assertParamObjectIsNotNull("subGraph", request.getSubGraph());
}
@Override
public Boolean action() {
ProjectSchema projectSchema = schemaManager.getProjectSchema(request.getProjectId());
boolean enableLeadTo = request.getEnableLeadTo() != null && request.getEnableLeadTo();
Map<SPGTypeIdentifier, ConceptList> conceptLists =
getConceptLists(enableLeadTo, projectSchema);
// 更换 writer
GraphStoreSinkWriter writer =
new GraphStoreSinkWriter(
UUID.randomUUID().toString(), "图存储", new GraphStoreSinkNodeConfig(true));
BuilderContext context =
new BuilderContext()
.setProjectId(request.getProjectId())
.setJobName("writer")
.setCatalog(new DefaultBuilderCatalog(projectSchema, conceptLists))
.setPythonExec(pythonExec)
.setPythonPaths(pythonPaths)
.setPythonEnv(pythonEnv)
.setOperation(RecordAlterOperationEnum.valueOf(request.getOperation()))
.setEnableLeadTo(enableLeadTo)
.setProject(JSON.toJSONString(projectManager.queryById(request.getProjectId())))
.setGraphStoreUrl(projectManager.getGraphStoreUrl(request.getProjectId()));
writer.init(context);
SubGraphRecord subGraph =
JSON.parseObject(JSON.toJSONString(request.getSubGraph()), SubGraphRecord.class);
// 更换 参数格式
List<BaseRecord> records = Lists.newArrayList();
records.add(subGraph);
writer.write(records);
if (context.isEnableLeadTo()) {
ReasonProcessor reasonProcessor = new ReasonProcessor();
reasonProcessor.init(context);
List<BaseRecord> reasonResults = reasonProcessor.process(records);
if (CollectionUtils.isNotEmpty(reasonResults)) {
GraphStoreSinkWriter sinkWriter =
new GraphStoreSinkWriter(
UUID.randomUUID().toString(), "图存储", new GraphStoreSinkNodeConfig(true));
sinkWriter.init(context);
sinkWriter.write(reasonResults);
}
}
return true;
}
});
}
注意:上面代码只更新了writeGraph接口,仅在写入数据的时候有效,并没有测试查询接口