openspg icon indicating copy to clipboard operation
openspg copied to clipboard

openspg 和 tugraph 的使用

Open Yz-Crazy opened this issue 5 months ago • 1 comments

我在docker compose 文件中配置了,在创建知识库的时候,都是默认走向neo4j,请问是完全不支持tugraph 了吗?

Yz-Crazy avatar Jul 10 '25 08:07 Yz-Crazy

我在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接口,仅在写入数据的时候有效,并没有测试查询接口

thundax-lyp avatar Jul 14 '25 04:07 thundax-lyp