实现 AutoComplete(自动完成),求最佳方案

2014-04-23 15:17:59 +08:00
 leoYu
1.使用Solr的搜索组件(SearchComponent):termsComponent

打开某实例的配置文件 solrConfig.xml,增加搜索组件配置

2.直接使用Solr的基础搜索接口Select实现

3.还有这篇文章,用redis实现autocomplete的文章 http://oldblog.antirez.com/post/autocomplete-with-redis.html

4.redis的交集功能来做搜索

但这个办法有几个缺陷
我觉得还是偏重,因为我只想实现一个用户名自动联想的功能而不是搜索。这样的系统还要维护一套庞大的索引,每次更新用户名还得一个一个删掉然后再塞入新的。
无法做LIMIT和OFFSET啊,翻页怎么半,万一一个交集非常大,岂不是要把系统撑死
模糊查询的功能偏弱,只能处理以关键词开头的情况。不过这个不是重点,能把上面两点解决就很好了。
不知道各位有什么好的方案?
solr也不够灵活
6303 次点击
所在节点    Python
2 条回复
okidogi
2014-04-23 17:21:39 +08:00
redis就可以啊,目前用来还不错的性能。
试试这个: https://github.com/fengli/autocomplete-redis
KennyZJ
2014-06-03 00:40:06 +08:00
redis最新的2.8.9比之前更进一步,zrangebylex已经很好用了,基本上这个command就主要针对的autocompletion,类比google instant search
http://redis.io/commands/zrangebylex

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/109715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX