【问题标题】:What strategies are used to implement type-ahead auto-completion on a large dataset?在大型数据集上实现预先输入自动完成的策略是什么?
【发布时间】:2011-01-01 17:56:10
【问题描述】:

我是一名 .NET WinForms/ASP.NET 开发人员,我认为有关如何在大型数据集上实现“预先输入自动完成”的问题与技术无关。如果有人可以向我指出参考实现或详细讨论,那就太好了,但这是我的问题:

  1. 大概,用户开始输入,并且在一段时间后,客户端请求服务器提供数据以提前输入。这个间隔有多长有经验法则吗?这个经验法则会随着要搜索的数据集的增长而改变吗?如果用户再次开始输入,但之前的查询由于数据集的大小而没有完成怎么办?

  2. 使用什么查询策略来拉取数据集?显然,查询必须是异步的,但它不是一个简单的SQL“%search term%”吗?使用了哪些文本匹配策略?该数据集的缓存有多严格?如果缓存太大怎么办?

  3. 当我们谈论使用 AJAX 的 Web 客户端与胖客户端桌面应用程序时,是否有任何不同的策略需要考虑?

在某个时候,我会看看具体的 .NET 实现,但我对现阶段的策略更感兴趣。

【问题讨论】:

    标签: .net ajax autocomplete


    【解决方案1】:

    解决您的第一个问题: 您必须考虑到一定数量的性能特定考虑因素。具有与快速且非过载数据库(甚至可能是本地数据库)的低延迟高带宽连接的系统可以更积极地轮询服务器,并为最终用户提供完全不同的自动完成体验。

    对于互联网应用程序,一般的经验法则是用户必须输入三个字符才能启动基于服务器的自动完成功能。这在某些情况下会完全改变。

    我想这也解决了你第三个问题的一部分。

    【讨论】:

    • 三个字符是一个有用的经验法则,但如果用户在搜索返回之前再次开始输入怎么办?
    • 您可以返回更大的结果集,并在客户端将其过滤到具有自上次响应以来输入的字符的子集。如果他们输入的速度快于自动完成的响应速度,并且他们输入的内容始终是服务器给出的建议之外的改进,那么自动完成无论如何都不会帮助他们。
    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 2012-02-15
    • 2010-09-06
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2010-10-15
    • 2011-06-05
    相关资源
    最近更新 更多