gpt4 book ai didi

java - neo4J java查询参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:14 26 4
gpt4 key购买 nike

我在将字符串列表传递给我的参数{code}时遇到问题

String request = "START sdg=node:Sfamilly(master = {code}) MATCH t-[CONTAINS_SF]->sdg RETURN count(distinct t) as count"

Map<String, Object> params = new HashMap<String, Object>();
List<String> codes = new ArrayList<String>();
codes.add("1234");
codes.add("12345");
params.put("master", codes);

Result<Map<String, Object>> resultMag = neo4jTemplate.query(request,params);

似乎没有考虑我的参数?

有什么想法吗?

我使用 spring data neo4j rest 2.3.0.M1。

谢谢。查尔斯。

最佳答案

首先,我想你想说

params.put("code", codes); // on line 7

更重要的是,在我看来,只有在通过 ID 查询节点时才支持传递列表。

不确定这是最好的解决方案,但它应该可行。它首先根据您的参数构建一个 Lucene 查询,然后将其传递给您的 Neo4j 查询。

private void yourMethod() {
String request = "START sdg=node:Sfamilly({luceneQuery}) MATCH t-[CONTAINS_SF]->sdg RETURN count(distinct t) as count";

Map<String, Object> params = new HashMap<String, Object>();
List<String> codes = new ArrayList<String>();
codes.add("1234");
codes.add("12345");
params.put("luceneQuery", listToParams("master", codes));

Result<Map<String, Object>> resultMag = neo4jTemplate.query(request, params);
}

private String listToParams(String paramName, List<String> params) {
if (params.isEmpty()) {
throw new IllegalArgumentException("Empty params");
}

Iterator<String> paramsIterator = params.iterator();
StringBuilder builder = new StringBuilder(paramName).append(":").append(paramsIterator.next());

while (paramsIterator.hasNext()) {
builder.append(" OR ").append(paramName).append(":").append(paramsIterator.next());
}

return builder.toString();
}

关于java - neo4J java查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151028/

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