实现即时线程搜索算法

时间:2010-11-25 14:25:15

标签: multithreading algorithm search

所以我想知道实现加载密集的即时搜索的一般算法是什么。不是特别在网络上,甚至在桌面/ winforms应用程序中。

如果我错了,请纠正我,但不能在每次击键时发送异步调用吗? (不确定how google instant manages this)它会在数据库/商店等上造成疯狂的负载。

我一直在考虑这样的事情:

  1. 火焰计时器每xxx毫秒
  2. 点火,禁用输入,禁用计时器,并发送异步调用进行搜索。
  3. 当呼叫返回时,显示结果,启用输入,启用计时器
  4. 这通常是如何处理的,还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

搜索查询通常非常小,因此服务器上增加的负载可能没有您想象的那么重要。只要您对查询的长度进行限制,就可以对每次击键发送查询。

无论如何,服务器知道它是如何加载的,因此负载管理的位置在服务器端。例如,您可以遵循以下策略:

在客户端:

  • 当搜索文本发生变化时,将其发送到服务器。
  • 当服务器发送一些结果时,请更新页面。

在服务器上,当从客户端收到查询时:

  • 如果我已经在处理来自该客户端的查询,请取消旧查询。
  • 如果我有来自该客户端的排队查询,请将其丢弃。
  • 将新查询添加到待处理搜索查询的队列中,除非队列已满。