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)。

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

20,359

社区成员

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

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