database - Neo4j 的引用完整性

标签 database graph neo4j

我正在开发一个项目,该项目使用图形数据库来保存搜索引擎的点击数据。节点可以是搜索词或 URL,边包含权重属性,以及搜索导致某人点击该 URL 的次数百分比。

点击 URL 的次数/搜索术语的次数

我的问题是,当我更新边缘时,百分比将是准确的,但如果我稍后更新搜索项节点并且搜索计数发生变化,边缘将不再具有正确的百分比。 Neo4j 有没有办法保持引用完整性?像外键类型的东西?

最佳答案

以下信息可能会有所帮助。

如果您存储的是点击次数而不是百分比,则无法获得不一致的数据。例如:

(:Term {id: 1, nSearches: 123})-[:HAS_URL {weight: 2, nClicks: 17}]->(:Url {id: 2})

使用此数据模型,您可以在需要时计算百分比。

例如,要查找对特定 URL 的访问百分比最高的 10 个字词:

MATCH (term:Term)-[r:HAS_URL]->(url:Url {id: 2})
RETURN url, term
ORDER BY r.nClicks/term.nSearches DESC
LIMIT 10;

但请注意,反向查询(查找特定术语访问百分比最高的 10 个 URL)甚至不需要计算百分比!这是因为在这种情况下,百分比都具有相同的分母。因此,您可以使用 nClicks 进行排序:

MATCH (term:Term {id: 1})-[r:HAS_URL]->(url:Url)
RETURN term, url
ORDER BY r.nClicks DESC
LIMIT 10;

关于database - Neo4j 的引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951120/

相关文章:

algorithm - 加布里埃尔图算法

javascript - d3 在数据更新时错误地附加了 dom 元素

Neo4j Cypher 控制台更改数据库

mysql - 如何使用 Laravel 5.3 通过 SSL 连接到 MySQL 数据库

database - nodejs和数据库通信 - 如何?

php - cakephp:如何在default.ctp中添加下拉列表?

algorithm - O(n+m) 中的 DFS 和 BFS 会发生变化吗?

python - Neo4j 处理数据快吗?对我来说太慢了

neo4j - 通过 GitHub 操作工作流程中的 yml 安装两个 Neo4j 服务器(在不同端口上运行)

sql - 从聚集复合键移动到顺序整数聚集键时性能下降