sphinx-作为搜索引擎的架构设计,求评价

coFinder 2014-05-06 10:23:45
想在应用中实现一个朋友网类似的搜索引擎,(很多社交类应用都有这样的搜索设计)

对于这种给定字段的数据检索,目前用户量不大的时候就直接用SQL 语句实现了。
(left join 多个表,where 条件 很丰富)。
但是目前用户搜索量越来越多,用sql 直接查数据 扛不住了,想用sphinx 来代替 setFilter


* 用户信息表总共又4个表,账户信息,用户基本资料,用户地理位置信息,用户设置信息。每个表都有userid


目前的设计方案:

1: sphinx对要过滤的字段做索引,
2: 新注册的用户通过定时增量索引更新sphinx的主索引
3: 对于用户修改了自己的资料的,采取 根据 updatetime 字段(所有用户表都有这样的字段) ,
通过定时任务 调用shpinx的upateAttributes来更新索引。
4:对于用户信息修改了 我也想通过mysql的UDF trigger 异步更新数据。(不知道哪种比较好??!?!)。

5: spinx取到的只是userid,
想把所有的要输出到客户端用户信息保存到Redis
键值对如:userinfo#$userid => {"name":"dashu","age":"38"}

得到userid之后,再通过redis 的 multiGet 获取用户信息。
对于redis里面的用户数据更新的问题 也是采用 定时 根据mysql的updatetime字段来更新,或者UDF trigger 异步更新(哪个好呢?? why)。

有没有大虾有更好的设计方案,拿出来分享一下。
...全文
125 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

20,398

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧