@功能是如何高效实现的
现在很多网站都有@功能,weibo,qq等,对于一段文字中嵌入如@sharecqy这样的文本,如何高效的把它提取出来。
我的思路是,检测到@后,先在好友中查找,没找到,在到整个用户数据库中做最大匹配。
至于如何查询,听说有种叫字典树的结构,不知道是不是可以用来解决这个问题,了解的介绍下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
目前我提供本站的处理方法,在textarea中进行事件绑定@,使用正则的方式将@符号匹配出来。然后将数据进行查找。
数据,可以用sql将用户A的好友【关注】数量全部赛选出来,放入缓存,memcacedA。然后使用js json的方式去解析即可。memcacedA请注意时间。
最后数据提交,有正则去匹配出有 @xxxx 后的xxxx,进行sql查询,如果做了队列[缓存],用队列[缓存]是最优的方法。
PHP 的正则为:
以上是本站使用的@操作,我也在学习最高效的解决办法。
最后附上atme.js
http://ichord.github.io/At.js/
OSCHINA @提到我 的处理代码 传送门
还有一款jquery插件:jquery-mentionsinput Github 传送门(没用过,暂不评价)
用自动机解决:先用 strchr/memchr 找到
@
,然后从下一个字符开始做最长匹配。自动机的功能比Trie树强,内存用量比Trie树小得多(小十几倍、甚至几十几百倍)