Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails中的邻近搜索_Ruby On Rails_Ruby On Rails 3_Postgresql_Geocoding_Proximity - Fatal编程技术网

Ruby on rails Rails中的邻近搜索

Ruby on rails Rails中的邻近搜索,ruby-on-rails,ruby-on-rails-3,postgresql,geocoding,proximity,Ruby On Rails,Ruby On Rails 3,Postgresql,Geocoding,Proximity,Rails有哪些邻近搜索选项?也许各有利弊 邮政编码数据库是未来的发展方向吗? 或者与gem(如Geocoder)一起使用地理编码? 有什么最佳实践或陷阱需要注意吗? 例如,一个黄页类型的应用程序,企业可以在其中列出,用户可以输入他们的邮政编码,找到离他们很近的企业,或者在指定英里半径内的企业 更新:该应用程序与上面的示例应用程序非常相似-企业可以在应用程序中列出一个目录,该目录将包含每种类型的企业的类别,用户可以进入一个类别,并在输入邮政编码后按距离对结果进行排序-因此,最接近他们的企业将首先

Rails有哪些邻近搜索选项?也许各有利弊

邮政编码数据库是未来的发展方向吗? 或者与gem(如Geocoder)一起使用地理编码? 有什么最佳实践或陷阱需要注意吗? 例如,一个黄页类型的应用程序,企业可以在其中列出,用户可以输入他们的邮政编码,找到离他们很近的企业,或者在指定英里半径内的企业


更新:该应用程序与上面的示例应用程序非常相似-企业可以在应用程序中列出一个目录,该目录将包含每种类型的企业的类别,用户可以进入一个类别,并在输入邮政编码后按距离对结果进行排序-因此,最接近他们的企业将首先显示。不会按名称或其他标准进行搜索-只需进入“拳击犬饲养者”页面并按距离排序即可。

我自己没有地理编码的经验,但Alex Reisner的gem看起来是最好的选择,相差一英里

Geocoder是Ruby的完整地理编码解决方案。在Rails中,它添加了按街道或IP地址进行地理编码,反向地理编码根据给定的坐标查找街道地址,以及距离查询。这很简单,只需在对象上调用地理代码,然后使用像Vincement.nearBillings,MT这样的范围


查看完整的示例,了解如何使用它。

我自己没有地理编码的经验,但Alex Reisner的gem看起来是最好的选择,相差一英里

Geocoder是Ruby的完整地理编码解决方案。在Rails中,它添加了按街道或IP地址进行地理编码,反向地理编码根据给定的坐标查找街道地址,以及距离查询。这很简单,只需在对象上调用地理代码,然后使用像Vincement.nearBillings,MT这样的范围


有关如何使用它的完整示例,请查看。

如果您计划添加附加搜索条件,例如公司名称、类别或复杂排序,并且您的数据库将增长超过10000,我建议使用外部搜索服务器。例如+

以下是地理搜索的示例:


RoR模型解决方案(如)在使用时效率不高。

如果您计划添加附加搜索条件,如公司名称、类别或复杂排序,并且您的数据库将增长超过10000,我建议使用外部搜索服务器。例如+

以下是地理搜索的示例:


RoR模型解决方案(如)在使用时效率不高。

答案取决于您想做什么。如果你想在一个半径范围内进行简单的近程搜索之类的,那么gem就太棒了!现在,如果您想要更高级的搜索功能多边形、多多边形搜索等,我建议使用数据库和精彩的扩展。对于Rails的使用,您一定要查看来自一个非常好的gem的作者的,该gem使用了超高速库和地理空间计算

否则,如果您发现您需要一个具有GIS功能的专用搜索服务器,那么您肯定应该使用Ruby,Ruby有一个很好的gem来帮助您使用名为ES的搜索引擎


希望我能帮忙

答案取决于你想做什么。如果你想在一个半径范围内进行简单的近程搜索之类的,那么gem就太棒了!现在,如果您想要更高级的搜索功能多边形、多多边形搜索等,我建议使用数据库和精彩的扩展。对于Rails的使用,您一定要查看来自一个非常好的gem的作者的,该gem使用了超高速库和地理空间计算

否则,如果您发现您需要一个具有GIS功能的专用搜索服务器,那么您肯定应该使用Ruby,Ruby有一个很好的gem来帮助您使用名为ES的搜索引擎


希望我能帮忙

您好,谢谢您的回答-我已经更新了关于该应用程序的更多信息,它将不会有其他排序选项或搜索。我不久前写了一个类似的应用程序。我用thinkig_sphinx与反向地理编码。嗨,谢谢你的回答-我已经更新了关于该应用程序的更多信息,它不会有其他排序选项或搜索。我不久前写了一个类似的应用程序。我用thinkig_sphinx与反向地理编码。谢谢你的回答Gerry-我用有关应用程序的信息更新了我的问题,看起来地理编码器会很好,你同意吗?尽管如此,我还是担心谷歌API的限制,即每天只有2500个请求——这是一个值得关注的问题吗?或者缓存选项会否定这一点吗?嗯,有很多方法可以处理缓存地理编码请求。我建议您使用Redis,但请记住,当您的应用程序越来越大时,您很可能早晚会达到Google API的限制。感谢您的回答Gerry-我用有关应用程序的信息更新了我的问题,看起来Geocoder会很好,您同意吗?中高音
hough,我担心谷歌API的限制,每天只有2500个请求——这是一个值得关注的问题吗?或者缓存选项会否定这一点吗?嗯,有很多方法可以处理缓存地理编码请求。我建议您使用Redis,但请记住,当您的应用程序越来越大时,您很可能早晚会达到Google API的限制。