关于sphinx实现准实时查询的方法

       在最近的项目中一直在使用sphinx全文检索,但是发现sphinx在建立索引后,如果没有重建索引,对Mysql里的数据进行修改或删除操作,都无法实时反应到sphinx索引中,导致查询不准确,但是如果在大数据量的情况下重建索引是一件很郁闷的事情:一、耗时间 二、服务器cpu狂飙。因此我们找到了http://blog.s135.com/sphinx_search/这种解决方案,但是太可惜了,这家伙竟然没开源,没办法弄,于是我们得重新设计sphinx来实现这个功能:

1、在所有在sphinx中配置的相关索引写入数组

2、在数据层如果进行更新或删除操作,如果涉及到相关索引的时候,将这部份操作通过sphinxclient的API中的updateAttribute()函数写入增量索引

3、查询的时候同时访问主索引和增量索引,如果发现有相同的doc时,则优先采用增量索引

4、在凌晨时,进行索引合并。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、XX网搜索引擎架构设计: 3 1、搜索引擎架构图(基于PHP+MySQL+Sphinx): 3 2、搜索引擎架构设计思路: 3 ⑴、调用方式最简化: 3 ⑵、创建索引、查询速度快: 3 ⑶、按服务类型进行分离: 4 ⑷、“主索引+增量索引”更新方式: 4 ⑸、“Ext3文件系统+tmpfs内存文件系统”相结合: 4 ⑹、中文分词词库: 5 二、MYSQL+SPHINX+SPHINXSE安装步骤: 5 1、安装python支持 5 2、编译安装LibMMSeg 5 3、编译安装MySQL 5.1.26-rc、SphinxSphinxSE存储引擎 5 4、创建Sphinx索引文件和MySQL数据文件存放目录 6 5、创建MySQL配置文件(以线上配置文件为) 6 ⑴、创建配置文件/mysql/3306/my.cnf(以db11的3306端口为例) 6 ⑵、创建配置文件/mysql/3406/my.cnf(以db11的3406端口为例) 8 6、制作一份MySQL Slave供搜索引擎使用 10 7、创建快捷启动、停止、重启、杀死MySQL进程的脚本(以db11的3306端口为例) 10 三、SPHINX配置: 11 1、生成Sphinx中文分词词库 11 ⑴、词典的构造 12 ⑵、词典文件格式 12 ⑶、XX网搜索引擎的中文分词词库 12 2、创建Sphinx主索引文件、增量索引文件存放目录 12 3、创建Sphinx配置文件 13 4、初始化sphinx.conf中配置的全部索引 13 5、创建两个shell脚本,一个用来创建主索引、一个用来创建增量索引。 13 ⑴、主索引更新脚本 13 ①、创建脚本build_main_index.sh: 13 ②、赋予主索引更新脚本可执行权限: 13 ③、每天凌晨定时重建主索引: 13 ⑵、增量索引更新脚本 13 ①、创建脚本build_delta_index.sh: 13 ②、赋予增量索引更新脚本可执行权限: 14 ③、每3分钟自动重建一次搜索引擎的增量索引: 14 6、启动Sphinx守护进程(searchd) 14 7、配置服务器开机启动时需要自动执行的命令(以db11为例) 14 8、创建Sphinx存储引擎表: 14 ⑴、设置/etc/hosts 14 ⑵、登录运行在3306端口的MySQL服务器(提供“搜索查询服务”): 14 ⑶、创建数据库“Sphinx”和相对应的Sphinx表(SQL语句): 15 示例SQL: 15 四、如何通过SQL语句调用搜索引擎: 15 1、搜索应用实例 15 ⑴、XX网北京出租房搜索 15 ⑵、XX网北京小区搜索 15 ⑶、在指定字段中搜索(例如在字段“title”中搜索关键字“中关村”) 16 2、SphinxSE存储引擎及SQL语法详细说明 16

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值