gpt4 book ai didi

node.js - 如何在neo4j中运行批处理事务

转载 作者:行者123 更新时间:2023-12-04 13:26:36 24 4
gpt4 key购买 nike

我们正在研究生产级别的推荐引擎用例。
我们有一个用例来获取基于地理排序的产品(最近的在前),我们想利用距离和点等空间函数对它们进行排序。
为此,我们需要 Product Node 中的纬度和经度属性,我们还没有,但我们有一个邮政地址,所以我们想,我们将使用 call apoc.spatial.geocodeOnce、fetch 和 set latitude和所有产品 Node 中的经度属性。
嗯,有点问题是它正在成为一项昂贵的操作,我们有大约 5000 个产品 Node ,更新每个 Node 平均需要 1000 毫秒,通过该计算,在单核上,更新所有 Node 需要大约 90 分钟 Node 。我们真的很想知道是否有一种更智能的方式来处理分块交易(也许,然后在一个 tx 中更新 500 个产品,然后再更新 500 个……等等)。我们认为 apoc.periodic.iterate 是一种可行的方法,但我们正在寻找有关如何有效解决此问题的建议?
P.S - 当我们尝试使用我们数据库中的邮政地址对几个产品进行几次 apoc.spatial.geocodeOnce 调用时,我们看到有几个调用没有返回结果,这可能是什么原因? (也许,我们没有这些产品的标准化邮政地址?如果有,我们该如何解决这个问题,我们应该为这些产品使用 google geocode API 还是在 neo4j 中嵌入其他更智能的方法)
我们的查询如下供引用:
调用 apoc.periodic.iterate(
"MATCH (p:Product) 返回 p",
"CALL apoc.spatial.geocodeOnce(p.postal_address) YIELD location SET p.latitude=location.latitude, p.longitude=location.longitude",
{batchSize:500, iterateList:true, parallel:true}
)

最佳答案

这是由于 apoc.spatial.geocodeOnce API 调用的限制。您可以向服务器发出的请求数量有一个速率限制器。
可以购买google geocode API Key,里面配置 apoc.conf 文件之类的,

apoc.spatial.geocode.provider=google
apoc.spatial.geocode.google.throttle=1
apoc.spatial.geocode.google.key={YOUR_API_KEY}
注意 - 这里的 throttle 以毫秒为单位

关于node.js - 如何在neo4j中运行批处理事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68098134/

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