利用 Neo4j 创建寻找失物的现代解决方案
一件遗落在伦敦公园的夹克,引发了一个无意的问题,由此开启了一家公司和 Neo4j 的独特应用。
问题的核心是一个七岁的小女孩,她抬头看着天空,预感到即将下雨,问爸爸为什么把夹克留在原地,希望主人回来取,这是最好的做法?难道它不会被淋湿吗?难道没有更好的方法吗?
“所以,这引发了 NotLost 的诞生,让我们以孩子的视角看待世界,”NotLost 的联合创始人兼技术总监 Sam Nash 说。“这个问题没有现代解决方案。”
NotLost 数据概览
- 图规模:超过 900 万个节点,近 1900 万个关系
- 找到的失物:每年超过 50 万件
- 平台:AWS 上的 Neo4j AuraDB
就问题而言,失物非常复杂。如果任其发展,会给任何服务大量客户的企业造成巨大的物流和行政负担。对于提供高品质客户体验的奢侈品牌来说,失物招领的现代解决方案至关重要。当然,失物者也会在情感和经济上渴望找回失物。
但失物本身更棘手,因为数据不统一,不可预测。并非所有失物都会被报告或找到。每件失物(或被发现)都发生在某个地方,某个时间。每件失物都可以用不同的方式分类——没有两件东西是相同的。全面思考所有方面非常复杂。
那么,如何构建一个平台来帮助管理这个问题,以及一个可以进行全局匹配的算法——什么样的数据库可以处理这些问题呢?
Neo4j:图数据库脱颖而出
“我们知道,我们需要一个非常灵活的数据库模型,因为我们意识到,随着我们不断构建,事情会发生变化,”Nash 说。“我们对数据结构没有很清晰的概念。我们不太了解我们需要记录哪些类型的对象。我们知道,我们想要构建的匹配逻辑中,属性之间会存在复杂的关系。图数据库似乎是自然的选择。”
作为一家在技术堆栈上做出重要决策的初创公司,NotLost 向其开发者团队寻求帮助,进行研究并推荐可以解决失物问题的解决方案。
“Neo4j 脱颖而出,”Nash 说,他注意到他的团队如何轻松地将图数据库启动并运行,以及如何了解如何使用 Cypher 查询它。NotLost 应用程序是图像驱动的,使用人工智能 (AI) 和自然语言处理 (NLP) 将物品通过不同的工作流路由,利用 Neo4j 绘制物品、位置、日期和其他信息。
“我们了解到,可配置性和定制化是市场所需,”纳什说道。“因为一家豪华酒店的流程与另一家豪华酒店不同,而这与公交公司管理流程又截然不同,反过来,也与火车线路管理流程大相径庭。因此,我们一直在构建配置,现在我们有了创建高度抽象数据模型的方案。它是高度可配置的,由模板和配置驱动。”

填补空白:大规模绘制遗失物品
NotLost 帮助拥有大量客户丢失物品的组织。例如,伦敦交通局(TfL)是伦敦公交、地铁和地上铁路网络背后的标志性交通网络。TfL 拥有超过 400 个车站,每年报告的丢失物品超过 330,000 件,是欧洲最大的失物招领处。
为了满足企业客户的需求,NotLost 需要持续的正常运行时间。他们还需要一种有效的方法来限制访问并创建权限,以便在由员工、供应商和其他人员组成的网络组成的多个地点的企业中查看某些数据。
“细粒度访问控制和数据限制已成为我们的真正差异化优势,”纳什说道。
NotLost 再无回头路
NotLost 自成立之日起就使用 Neo4j,最初使用的是 Neo4j 社区版,后来迁移到云端,使用全托管的 AuraDB。最终的结果是一个软件应用程序,普通人可以轻松地使用它来登记找到的物品或报告丢失的物品,但它又具备在企业级运行的强大功能和灵活性。
纳什说,他们在五年前开始寻找图数据库时,他知道一些大品牌(如 eBay)以类似的方式使用 Neo4j:绘制许多具有不同数据点的物品之间的关系,并能够搜索大型数据集。
“我们一直没有遇到任何问题,它一直都能很好地解决我们的问题,而且易于使用,Neo4j 团队在我们在迁移到 Aura 时反应迅速,”纳什说道。“我认为我们的开发团队非常喜欢它!”