首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即时搜索注意事项

即时搜索注意事项
EN

Stack Overflow用户
提问于 2010-09-29 10:43:37
回答 2查看 277关注 0票数 0

我已经开始开发一个基本的即时搜索工具。

这是一个工作流草案。

  1. 用户按下一个键
  2. 当前值传递给函数,该函数将对web服务进行Ajax调用,
  3. Web服务将通过LINQ在数据库上运行select,并检索与我的值匹配的值列表。我将通过使用service子句实现这一目标,function.
  4. Function将向

返回数据,并通过jQuery.填充相关控件。

我有以下关注事项:

问题:快速打字员:我在几秒钟内输入了这个句子。这意味着,在每个按键上,我都会向数据库发送一个请求。我可能会有10个人做同样的事情。服务器可以返回5条记录的列表,也可以返回1000条记录的列表。此外,我可以按住一个键,这将发送几百个请求到一个数据库-这可能会减慢整个系统的速度。

可能的解决方案:

  1. Timer,我将能够每2-4秒向数据库发送一次请求,
  2. 不返回任何数据,除非该值至少有3个字符长,
  3. 返回有限数量的行?

问题:我不确定LINQ是否能应付潜在的负载.

解决方案:I可以使用存储过程,但是还有其他可行的替代方案吗?

我很想知道是否还有其他人在做类似的项目,以及在实施之前你考虑了什么。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-29 11:26:45

何时调用web服务

只有当用户对建议感兴趣时,才应该调用web服务。只有当用户知道要键入什么时,他才会快速输入。所以,当他打字快的时候,你不需要向用户提供建议。

当一个快速打字员停顿了一小段时间后,他可能会对搜索建议感兴趣。这时,您将调用web服务来检索建议。

缓慢的打字员将总是受益于搜索建议,因为它可以节省他们在查询中键入的时间。在这种情况下,在击键之间总是会有短暂的停顿。同样,这些短暂的暂停是从web服务中检索建议的队列。

您可以在用户按下键后,使用setTimeout函数调用web服务500毫秒。如果用户按下某个键,则可以使用clearTimeout重置超时。只有当用户空闲半秒钟时,这才会导致对web服务的调用。

LINQ的性能

如果查询不太复杂,LINQ可能会执行得很好。

为了提高性能,您可以将建议的数量限制在20个左右。大多数用户对成千上万的建议并不感兴趣。

票数 1
EN

Stack Overflow用户

发布于 2010-09-29 22:33:20

如果要搜索文本块以查找特定的关键字,请考虑使用全文目录而不是like子句。除了速度更快之外,它还可以被配置为识别同一单词的多种形式(比如鼠标和老鼠,或者叶子和叶子)。

要真正使您的搜索闪亮,您可以纠正许多常见的拼写错误使用levenshtein距离,以比较搜索词与列表的相似术语,当没有找到匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3820834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档