我希望为社区转租广告网站做这件事,但从理论上讲,算法对于任何本地搜索都是类似的。
搜索的区域越少,搜索的默认半径越高。 另一方面,人口密度高的地区应该具有较低的默认半径,以保持当地的相关性。
这可能更像是一个数学问题,而不是编程问题,但代码非常受欢迎。到目前为止,我已计算出每个城镇或村庄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将是首选。
谢谢
答案 0 :(得分: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是真正重要的考虑因素,而不是一个特殊的情况,它都是自己的)。无论如何,我认为这种方法有一定意义,至少可以考虑一些事情。