gpt4 book ai didi

java - Neo4j 3.5 全文搜索仅使用嵌入式 API,无需 Cypher

转载 作者:行者123 更新时间:2023-12-02 10:22:25 27 4
gpt4 key购买 nike

我在应用程序中使用新的 Neo4j 3.5 全文搜索功能。目前我通过嵌入式 API 执行 Cypher 来实现这一点。

public Result search(String term, String index) {
// The query
String cypherQuery =
"CALL db.index.fulltext.queryNodes(\"" + index + "\", \"" + term + "\") YIELD node, score\n" +
"RETURN id(node), score";
// Execute query
return db.execute(cypherQuery);
}

我认为可以利用这种方法来注入(inject) Cypher。有没有办法仅使用 API 来执行全文搜索?

最佳答案

为了避免 Cypher 注入(inject)攻击,您应该将输入传递为 parameters ,如:

public Result search(String term, String index) {
// The query
String cypherQuery =
"CALL db.index.fulltext.queryNodes($index, $term) YIELD node, score\n" +
"RETURN id(node), score";
// Execute query
Map<String, Object> params = new HashMap<>();
params.put("term", term);
params.put("index", index);
return db.execute(cypherQuery, params);
}

[更新]

注意:参数的使用是neo4j官方推荐的。例如,引用 Java 驱动程序的 Javadoc StatementRunner :

Using parameters is highly encouraged, it helps avoid dangerous cypher injection attacks and improves database performance as Neo4j can re-use query plans more often.

关于java - Neo4j 3.5 全文搜索仅使用嵌入式 API,无需 Cypher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54243817/

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