2

我希望为社区转租广告网站执行此操作,但理论上该算法对于任何本地搜索都是相似的。

搜索的区域人口越少,搜索的默认半径就应该越高。另一方面,人口密度高的区域应该具有较低的默认半径,以保持本地相关性。

这可能更像是一个数学问题而不是编程问题,但代码非常受欢迎。到目前为止,我已经计算了每个城镇或村庄 15 英里范围内的转租数量,并将其保存在数据库中作为密度的近似值。当有人搜索城镇或村庄时,我打算使用这个数字来计算搜索的距离。

为了测试任何提议的解决方案,我提取了一些我希望算法得出的近似数字。如果在一个点的 15 英里内有很多转租,比如 30k,我希望搜索的默认半径约为 3 英里。如果只有很少的 1 或 2,默认半径应该高达 25 英里,如果周围没有地方,甚至更多英里。具有约 1k 转租的中程区域的默认半径为 15 英里。这些只是示例,密度会随着数据库中事物的数量而增长或缩小。

Population -> Default search radius
0          -> very high (~60 miles or more)
1          -> 25 miles
1k         -> 15 miles
30k        -> 3 miles

我是否朝着正确的方向前进?对于以代码为中心的答案,Python 或 PHP 将是首选。

谢谢

4

1 回答 1

1

一个合理的方法是定义区域,使它们包含相同数量的人,然后每个区域中的可用公寓数量大致相同。

用数学方式写这个:

N = total number of people within a region
d = population density of the region (taken to be what you list as population)
A = Area of region
R = Radius of the region A

所以 ,N = d*A = d*pi*R*R并且我们想要N保持不变,所以R = K*sqrt(1/D), 哪里K是一个常数来匹配你的数字,或者大约 500 英里。然后,

30K    ->   2.9  miles
 1K    ->   16   miles
  1    ->   500  miles

所以它适用于前两个,虽然不是人口为 1 的极端情况(但不清楚 1 是否真的是一个需要考虑的重要情况,而不是它自己的特殊情况)。无论如何,我认为这种方法是有一定道理的,并且至少给出了一些值得考虑的地方。

于 2012-04-09T23:15:31.483 回答