【问题标题】:Display ALL countries in an autocomplete form以自动完成形式显示所有国家
【发布时间】:2013-12-21 21:04:09
【问题描述】:

第一次在这里发帖,因为谷歌没有结果!

所以,我有一个基于旅行和地点的网站。每次有人在网站中输入内容时,他们都会选择一个位置,然后该内容会包含经纬度、国家/地区等。

我面临的问题是我拥有世界上所有“城市和地区”的数据库,并且我相信数据库中有 350 万条记录。

我的问题是,你们如何建议为所有城市制作一个 1 字段自动完成表单?我不需要关于自动完成表单本身的建议,我需要关于我应该如何以及在哪里存储数据的建议......文本文件? SQL?到目前为止,我一直在使用 SQL,但我不知道应该怎么做。如果我只返回 100 条左右的记录,AJAX 自动加载器是否能够处理它?是否应该预加载所有结果?

感谢你们的帮助!

编辑:我实际上找到了另一种方法。我发现这个很棒的小插件可以将 Google 地图与它集成

http://xilinus.com/jquery-addresspicker/demos/index.html

太棒了。

【问题讨论】:

  • 只需在您的自动完成功能中调用 ajax。将选择的国家作为参数之一发送
  • 将选择的国家作为参数发送是什么意思?我想要 1 个输入字段,用户开始输入城市或地区并返回最接近的结果。 :)
  • 在ajax中,应该是发送要处理的数据,用ajax发送两个东西,国家和用户输入的城市地区名称,可以用ajax发送多个值
  • 谢谢,我对 AJAX 或开发一点也不陌生。我怎么能发送国家...如果我没有国家?你没有按照我的要求。我能够通过 AJAX 发送的唯一数据是用户输入到单个输入字段中的字母。没有要发送的“国家”变量。我可以在城市被调用后找到国家。看到我的困境了吗?输入字段不限于来自单个国家的城市。无论用户输入什么,都应该可以从数据库中的每个城市记录中获得(大约 300 万条左右)
  • 那么不发国家,只发城市地区名,现在你只需要创建一个优化的查询,查询300万条记录不会花费太长时间,就去ajax,调用它在您的自动完成功能中

标签: sql database autocomplete large-data-volumes large-data


【解决方案1】:

本尼

我有几个想法:

  1. 由于您不知道用户将输入英文名称还是本地(本地)名称,所以数据库中的每个城市记录都应该同时具有这两者。确保为这些字段编制索引。

  2. 在达到最少字符数之前不要执行自动完成。否则,您将匹配表中的太多行。例如,假设英文字符(26 个)均匀分布,那么在 350 万条记录中,您将统计得出 thar = he 以下匹配每个字符:

1 个字符 = 135k
2 个字符 = 5.2k
3 个字符 = 200
4 个字符 = 8

  1. 如果您使用的是 MySQL,则需要使用 LIKE 说明符。

预测匹配有很多先进的方法,但这应该是一个好的开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多