2010-11-08 51 views
3

我在网页上有此文本输入字段。用户输入项目名称进行购买。我想根据目前输入的字母提供可能名称的下拉菜单。从内存中收集(.NET)的快速自动完成

问题是如何在服务器上实现搜索(ASP.NET MVC)。我可能会在应用程序启动的静态变量中加载整个项目名称集合(有超过100 000个)。我应该如何实现从给定一个或多个字符开始的有效搜索名称?

TIA

回答

2

您可以按名称集合,然后写一个返回范围内的项目的改进型二分查找。

但是,我会建议先尝试一个简单的顺序搜索并查看其在负载下的行为。

1

我可能会加载整个 集合项目的名称(有 超过100 000)在 应用程序启动一个静态变量。我应该如何实现 高效搜索名称从 开始的给定一个或多个字符?

通过NOT(!)将它们加载到静态变量中。使用“top 101”子句在每个请求上打击数据库服务器。成品。

+1

TomTom,真的吗?有时这个页面负载很重。自动完成必须是即时的。打开数据库以获取只读数据违反了我听说过的所有最佳做法。必须有一个原因,ppl正在使用Memcached和Velocity。 – 2010-11-08 18:22:04

+0

是的,真的。或预缓存结果(即条目字符串,返回的结果),这可以通过IIS输出缓存完成。不要重新实现数据库。如果oyu需要更多的db服务器来获取它们。编程会让你付出更多。 – TomTom 2010-11-08 18:26:20