我正在开发一个项目,该项目使用图形数据库来保存搜索引擎的点击数据。节点可以是搜索词或 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/