我已经开始开发一个基本的即时搜索工具。
这是一个工作流草案。
返回数据,并通过jQuery.填充相关控件。
我有以下关注事项:
问题:快速打字员:我在几秒钟内输入了这个句子。这意味着,在每个按键上,我都会向数据库发送一个请求。我可能会有10个人做同样的事情。服务器可以返回5条记录的列表,也可以返回1000条记录的列表。此外,我可以按住一个键,这将发送几百个请求到一个数据库-这可能会减慢整个系统的速度。
可能的解决方案:
。
问题:我不确定LINQ是否能应付潜在的负载.
解决方案:I可以使用存储过程,但是还有其他可行的替代方案吗?
我很想知道是否还有其他人在做类似的项目,以及在实施之前你考虑了什么。
谢谢
发布于 2010-09-29 11:26:45
何时调用web服务
只有当用户对建议感兴趣时,才应该调用web服务。只有当用户知道要键入什么时,他才会快速输入。所以,当他打字快的时候,你不需要向用户提供建议。
当一个快速打字员停顿了一小段时间后,他可能会对搜索建议感兴趣。这时,您将调用web服务来检索建议。
缓慢的打字员将总是受益于搜索建议,因为它可以节省他们在查询中键入的时间。在这种情况下,在击键之间总是会有短暂的停顿。同样,这些短暂的暂停是从web服务中检索建议的队列。
您可以在用户按下键后,使用setTimeout函数调用web服务500毫秒。如果用户按下某个键,则可以使用clearTimeout重置超时。只有当用户空闲半秒钟时,这才会导致对web服务的调用。
LINQ的性能
如果查询不太复杂,LINQ可能会执行得很好。
为了提高性能,您可以将建议的数量限制在20个左右。大多数用户对成千上万的建议并不感兴趣。
发布于 2010-09-29 22:33:20
如果要搜索文本块以查找特定的关键字,请考虑使用全文目录而不是like子句。除了速度更快之外,它还可以被配置为识别同一单词的多种形式(比如鼠标和老鼠,或者叶子和叶子)。
要真正使您的搜索闪亮,您可以纠正许多常见的拼写错误使用levenshtein距离,以比较搜索词与列表的相似术语,当没有找到匹配。
https://stackoverflow.com/questions/3820834
复制相似问题