在数据库中搜索地址的用户查询字符串

时间:2012-12-19 02:39:20

标签: ruby-on-rails postgresql geocoding

我在Postgres数据库上有一个Rails应用程序,我需要有一个搜索字段供用户输入字符串并在数据库中查找可能的地址匹配(在一个城市内)。在数据库中,我有一个包含完整地址的列。

我不能对输入做出假设,所以我想我应该首先尝试直接在数据库上查找地址(使用LIKE查询?),如果失败,请求地理编码API(即谷歌)返回与查询匹配的格式良好的地址列表,并搜索我的数据库中的那些。

我很感激有关如何做到这一点的任何指导。

2 个答案:

答案 0 :(得分:1)

我认为FTS(全文搜索)不是你想要的。您必须使用可以匹配地址的地址API。

我已成功轻松地使用SmartyStreets这样的事情。他们有一个你可以使用的免费帐户。 http://smartystreets.com

此外,如果您确实想尝试沿着FTS路线前进,那么这是一个解释如何操作的要点。 https://gist.github.com/4365593

答案 1 :(得分:0)

你可能已经知道了,但是postresql集成了全文搜索引擎,所以现在是利用它的好时机。我建议观看那些优秀的railscast

然后实施:

class Place < AR
  def search_db_or_geokit(query)
    res = db_search()
    if res.empty?
      res = geokit_search(query)
    else
      res
    end
  end

  def geokit_search(query)
    # ...
  end

  def db_search(query)
    # ...
  end
end

对于地理编码谷歌搜索API,可能有一个很好的宝石,如geokit