我希望为社区转租广告网站执行此操作,但理论上该算法对于任何本地搜索都是相似的。
搜索的区域人口越少,搜索的默认半径应该越大。 另一方面,人口密度高的地区应具有较小的默认半径,以保持本地相关性。
这可能更像是一个数学问题而不是编程问题,但非常欢迎编写代码。到目前为止,我已经计算出每个城镇或村庄 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。
谢谢
请您参考如下方法:
一个合理的方法是定义区域,使它们包含相同数量的人,然后每个区域的可用公寓数量大致相同。
用数学方法写这个:
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 是否真的是一个需要考虑的重要情况,而不是它自己的特例)。不管怎样,我认为这种方法有一定的道理,至少可以提供一些考虑因素。
