2012-01-12 132 views
1

我期待将jqueryui-autocomplete与django项目集成。我的解决方案的起点是https://code.djangoproject.com/wiki/AutoCompleteSolutionsDjango自动填充字段,更好地预先填充?

我遇到的解决方案使用*__icontains*__startswith,虽然这些搜索当然可以缓存(查看http://djangosnippets.org/snippets/233/)。我想知道如果在数组中使用相对较小的术语列表(10,000?)预填充页面实际上会节省数据库匹配&是更好的解决方案。例如,通过Django的输出方面一气呵成:

return [str(e.keyword) for e in CM_Dict.objects.all()]

,然后在一个非常基本的jQuery的UI的自动完成配置使用结果列表为source:

有没有一种好的方法来测试这样的东西?有没有人在生产中使用django + autocomplete?

编辑:我应该补充说,自动完成只适用于已登录的用户,但数据在任何方面都不敏感。

+0

这首先摆脱了您可能想要使用ajax自动完成的原因。除非您可以阅读头脑,否则预填充的数据可能需要相对较大才能涵盖潜在查询的基本集合。即使有一半的用户击中了预填充的数据,仍然有另外一半的人花费了时间(和带宽)来传输数据,但仍然必须联系服务器! – 2012-01-13 02:16:30

+0

不,这是使用jqueryui-autocomplete并配置为使用JS数组的选项。这些不是潜在的查询,如谷歌或一些通用搜索,只是该领域的潜在条款列表。 – null 2012-01-13 10:21:02

回答

0

这听起来像是对我的一个早期优化。它会节省数据库命中吗?也许虽然你必须打数据库来预先填充,所以你的初始页面加载将受到影响。您可以缓存预填充数据以避免数据库命中,但您也可以在服务器端视图上执行此操作。这似乎与现有的Django自动完成解决方案更好地结合在一起。

我在生产中使用了一些自动完成解决方案。我也是其中之一的作者:django-selectable。对这种类型的变化进行基准测试需要知道每个查询的成本以及使用频率。解析服务器日志的计数/加载时间将是一个开始。总的来说,如果你的自动完成ajax视图是你的应用程序的瓶颈,我会感到惊讶。