使用CouchDB和now.js自动完成

时间:2011-11-03 14:51:16

标签: javascript html5 node.js autocomplete couchdb

我想在某些文字字段中启用自动填充,并且不知道最佳策略。所有数据都存储在CouchDB中,我有一些视图返回id和密钥以及自动完成的名称。我读到了start key and end key solution,我想在now.js中使用它。这看起来怎么样?

这是正确的解决方案,还是我应该与redis或memcache同步?或者用列表填写Trie?还是HTMl5本地存储?

数据在主页面上使用,因此经常查询,但设置不是很大,可能最多500个条目,大约改变。每周一次。

2 个答案:

答案 0 :(得分:0)

在我看来,500个参赛作品并不算太大。您可以这样做:前端的YUI自动完成模块。页面加载后,通过REST API从服务器检索一次数据,并为需要它的每个字段初始化自动完成数据结构。

对于较大的数据集,您仍然可以使用YUI自动完成小部件,但每次击键时数据都将来自服务器。在服务器上,您可以预先构建基于三元搜索树的索引(每周一次)并使用Web服务提供服务,获取部分类型的字符串并返回固定的最大匹配列表作为输出。查看yahoo finance上的财务符号自动完成。

基于服务器的方法的优点是无论语料库(数据)大小如何,性能都很快。但是为了获得最佳内存使用,您只需要在树的节点中存储有限的匹配列表。使用YUI自动完成模块存储和索引数据的第一种方法,您可以看到输入的所有匹配,但响应可能会慢一些。

答案 1 :(得分:0)

我在CouchDB Typeahead Search中使用了now.js自动完成功能,结果非常好。不想安装另一个库(YUI)。