2

我正在构建一个 Web 应用程序,该应用程序将在最终用户输入信息时使用自动完成/建议。这将专门用于输入国家、省、市信息。

在每次击键时对数据库进行通配符搜索:

SELECT CityName 
FROM City
WHERE CityName LIKE '%@CityName%'

将给定省份的所有城市列表返回给客户端,并让客户端进行匹配:

SELECT CityName 
FROM City
WHERE ProvinceID = @ProvinceID

这些将通过对 Web 服务的 ajax 调用作为 JSON 字符串返回给客户端。我的想法是,javascript 能够通过 JSON 处理 100 多个条目的列表,速度比数据库能够进行通配符搜索要快,但我想要社区输入。

4

3 回答 3

3

在过去,我使用了这两种技术。如果您谈论的是 100 个左右的条目,并且假设每个条目非常小,那么在客户端执行自动完成过滤器可能会更快。这将为您提供更好的响应时间(尽管可能可以忽略不计)并减少服务器上的负载。

谷歌实际上是在用户打字的时候进行实时搜索,从用户的角度来看,它似乎反应灵敏。这是一个查询必须在服务器端执行的示例,因为数据集太大而无法传输到客户端。

您可能会做的一件事是等到用户键入两次击键后再从服务器获取列表,从而最初缩小结果范围。当然,这会增加复杂性——如果用户更改了前两次击键中的任何一个,您就需要刷新列表。

于 2012-09-27T20:40:07.180 回答
2

我们已经使用 ajax 自动完成控件实现了相同的功能我们在从服务器获取列表之前等待用户键入三个键我们没有在客户端进行任何编码我们只是分配了 Web 服务方法,该方法将列表返回给 ajax 控件并开始工作

于 2012-09-29T21:43:45.677 回答
1

为了最终用户的利益,最好处理这个客户端。

Telerik Autocomplete 控制器允许两种方式。

当然在负载下客户端自动完成很可能使应用程序爬行。

于 2012-09-27T20:44:32.907 回答