gpt4 book ai didi

ruby-on-rails - 太阳黑子空间搜索不返回结果

转载 作者:行者123 更新时间:2023-12-04 03:44:09 25 4
gpt4 key购买 nike

我刚刚在我的应用程序中实现了 Sunspot gem,我真的很喜欢它,除了当我进行位置搜索时它似乎排除了一些结果。例如:我住在俄亥俄州哥伦布市,所以如果我搜索“俄亥俄州哥伦布市”,我的应用程序会将其转换为纬度/经度,然后我会这样做:

@search = (Skatepark.search {

with(:coordinates).near lat, lng, :precision => 3
fulltext text
paginate :page => params[:page], :per_page => 15

})

这将返回一些在哥伦布西侧进行地理编码的记录,但我的数据库中没有在东侧的记录。我的搜索做错了吗?

您可以在 http://skateparks.co/search 亲自试用。

如果您搜索“哥伦布俄亥俄州”,您将得到与搜索距东南方仅几英里的“俄亥俄州兰开斯特”完全不同的结果。

最佳答案

这是因为 Sunspot 依赖于生成地理空间索引的 gem 'pr_geohash'

geohashz-order curve 的一种形式。

您正在尝试使用此索引解决 nearest neighbor problem,它本质上只能产生 近似 结果。作者会选择这种方法,因为 Solr 旨在处理大型数据集,其中 suffer from the curse of dimensionality

根据您的要求,也许您应该尝试

  • siloless 解决方案,例如。 Freebase(有several gems)
  • 一个 saas solution
  • a spatial database ,
  • a geodatabase ,
  • 还是你自己的 approach

  • 建议的解决方案

    geojson 对象用于 cities, towns, & villages 而不是普通的纬度/经度。使用 semantic autocompletion 以便用户可以直接从 Freebase 中选择多边形。 (界面示例: Quora 搜索框)这样,当您现在进行多边形边界搜索而不是径向搜索时,将返回所请求城市中的所有结果。

    我敦促您将您的数据作为 Freebase Locations 提供,其中父级是 City/Town/Village,如果根据您的商业模式这可能的话。原来有一个 location type 和一个 location topic 都为你准备好了。

    更新 1

    我注意到你在 Heroku 上。

    如果您有专用数据库,则可以使用 PostGIS

    如果没有,请阅读 How do you do GIS queries on Heroku using the shared database?

    关于ruby-on-rails - 太阳黑子空间搜索不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155251/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com