实现良好的自动完成?

时间:2011-08-13 10:01:46

标签: ruby-on-rails ruby-on-rails-3 algorithm autocomplete

我正在运行一个Rails 3应用,我有一个jQuery自动完成框,它会根据Google商家信息自动填充功能返回结果。现在,我还希望它根据输入的字符串返回本地数据库中存在的位置的结果。

我已经设置了我需要的所有东西,以便能够从我的本地数据库返回我想要的地方。目前,它返回我本地数据库中的每个位置,但我需要实现一个算法来匹配输入的字符串到位置。现在,我的问题是,是否有一个很好的标准算法,我可以用来获得自动完成结果,(希望与谷歌地方自动完成相提并论)?不要担心实现细节,只需要算法。

如果在Rails中有现成的解决方案,那就太棒了!

2 个答案:

答案 0 :(得分:2)

我有类似的设置(对work_items有效的任务),这是我必须做的粗略草图:

  1. 安装实现大部分所需功能的rails3-jquery-autocomplete
  2. 在您的视图中实施类似:f.autocomplete_field :task, autocomplete_task_title_work_items_path, :id_element => "#task_id"
  3. 的内容
  4. 包含在您的控制器中,该控制器在开头执行以下行的操作:autocomplete :task, :title, :limit => 1000, :full => true
  5. 您应该在GitHub上找到rails-jquery-autocomplete的一些文档,其中包含更多选项和解释。

答案 1 :(得分:0)

如果您拥有该位置的地理坐标,则可以使用空间索引或空间填充曲线来查找象限中的所有位置。或者您可以尝试使用harvesine配方进行更精确的匹配。