我建立了一个度假租赁和住房租赁网站。我创建了一个页面,用户可以自己添加位置(最多6级)但我遇到了一个问题。用户可以添加位置,即:
北美 - >美国 - >加利福尼亚 - >旧金山
另一个用户可能会到达并添加他认为属于SF(比如Silver Terrace)的SF区域。 另一个用户可以添加相同的区域,但他不会在SF下看,并且会添加为SF的兄弟节点
北美 - >美国 - >加利福尼亚 - >银色露台
所以现在我们有:
北美 - >美国 - >加利福尼亚 - >旧金山 - >银色露台
北美 - >美国 - >加利福尼亚 - >银色露台
当然是重复的= /我可以告诉用户第二次添加Silver Terrace它已经存在但是第一个用户可能放错了导致问题。
即使我不允许用户添加位置,我自己也会这样做或将其限制为少数用户,但要正确添加所有位置仍然非常困难。
在其他国家,还有一个问题,即包括或不包括州/区/地区等,以便成为地点之路的一部分......
我已经阅读了很多关于此的帖子,但我无法解决好的解决方案。
很难完全消除位置,因为我将它们用于子域,即。 san-francisco.example.com或california.example.com。如果用户不想(或不能)使用地图,则位置还允许用户按国家/州/城市/地区/邻居/等进行浏览。
我认为没有一个完美的答案,但如果你有一些建议,请告诉我。非常感谢你。
答案 0 :(得分:2)
您可以使用另一种方法来自动添加用户输入很少的子域,这是一种统计方法。 (这种方法假设您最初没有关于位置的信息)
作为一个激励性的例子,假设您的系统中有20,000个用户,其中10,000个用户放置在一个位置(以x - >(y - >)* z的形式)以“United”开头国家 - >加州“
因为“美国 - >加利福尼亚”是在如此众多的地方找到的元素,所以您可以确信“美国 - >加利福尼亚”实际上是一个有效的位置。添加子域时这种方法很有意义,因为在您的大部分人口成为该子域的成员之前,您可能不想添加子域。
答案 1 :(得分:1)
在X-> Y-> Z路径上附加一个隐藏值,表示Z的邮政编码。这可能是确定哪些路径重复的最简单方法。