gpt4 book ai didi

mongodb - 查找与家庭住址最接近的匹配项

转载 作者:可可西里 更新时间:2023-11-01 10:27:27 25 4
gpt4 key购买 nike

假设我在数据库中的属性对象之一如下所示:

{

id: ObjectID(454379857349857349545345),
property_name: 'building 9',
address_street_1: 'mark street 2',
address_street_2: 'mark avenue',
address_city: 'o town',
address_zip: '687',
state: 'o state'
}

在创建新地址之前,我需要检查是否已经创建了相同/相似地址的属性。如果假设新数据的地址为:

property name: 9,
street 1: mark street 2,
street 2: mark ave,
city: O-town,
zip: 687,
state: O-state

最佳答案

我个人不会尝试匹配诸如“building 9”与“9”相同或任何其他组合之类的东西。它过于宽泛,容易在逻辑上出错,而​​且需要编写的逻辑太多。

如果您存储了该属性的“地理位置”,那么您实际上可以进行直接比较,即您没有添加具有基本相同位置数据的内容或“靠近”该位置的距离太小。您可以获得精确到 1 米的距离,因此通常在几平方米以内的任何东西都将是“否”,因为它们是同一个地方,或者至少要经过仔细审查。

因此,如果您的数据实际上看起来像:

{
_id: ObjectID(454379857349857349545345),
property_name: 'building 9',
address_street_1: 'mark street 2',
address_street_2: 'mark avenue',
address_city: 'o town',
address_zip: '687',
state: 'o state',
"location": {
"type": "Point",
"coordinates": [150.9482,-33.7764991]
}
}

然后你想通过它的位置数据检查一个新列表,那么你基本上会做一个 $nearSphere$minDistance 查询过滤掉任何太接近的东西:

db.collection.find({
"location": {
"$nearSphere": {
"$geometry": {
"type": "Point",
"coordinates": [150.9482,-33.7764991]
},
"$minDistance": 20
}
}
})

最小距离为 20 米且您通常不会期望在结果中找到任何内容。但是,如果您这样做了,那么这是对返回列表的快速检查,以查看这是否“看起来像”相同的地址,并且可以由“人”处理。

因此,使用 GPS 等具体的东西从位置读取并保存它,然后检查相同的地址就变成了一项简单的任务。

Geospatial Queries and indexes获取更多信息。


附录

只是认为这实际上是一个有用的搜索结果,所以这是您如何达到这一点的基本潜台词。

对于问题中“一般描述”的系统,您通常有一个负责属性(property) list (原文如此)的“代理人”,并且“所述代理人”将要进行的假设是非常合理的在建立新业务的过程中参观感兴趣的属性(property)。

因此我想到了两个基本点:

  1. 这个星球上(在合理的工作场景中)有谁没有随身携带能够确定其当前位置的手机?即使是手机信号塔信号强度三角测量也应该在合理的米半径范围内使这一点基本正确,但通常这些“小计算机”都具有 GPS 功能,并且还能够与记录其当前位置的应用程序进行交互。

  2. 这可能有异常(exception),或者只有“不懂技术的 super 销售人员”至少可以“指着 map ”(毕竟他们实际上以某种方式找到了这个地方)或自己解决通过从界面中选择 map 位置在办公室中。

考虑到这两个选项中的任何一个,用户(或助手)需要完全无能才能以某种方式从呈现的 map 中选择属性的位置。嘿,“谷歌”(无品牌意图)大多数时候仅根据键入地址的“文本”就可以正确使用。但我们在这里并不是要构建“Google”(品牌背书不是故意的),而只是一个可以完成这项工作的应用程序。

归根结底,如果人们真的不能“指点 map ”,或者无法使用口袋里的 GPS,那就让他们手动查找吧。并将其列为“设计约束”,直到支付 2 万美元的账单。

关于mongodb - 查找与家庭住址最接近的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32347404/

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