#网上虽然有这么一张图,但是解释很少,我也觉得只看这张图很难深刻理解Sphinx,下面我通俗的介绍一下;
#首先有一个MySQL主库,这个主库的存储引擎是InnoDB;
#服务器运行两个MySQL从库进程,假定端口号分别是3306和3406;
#创建主库和从库的目的是为了让数据库一直处于工作状态;
#端口号为3306的进程包括MyISAM和Sphinx两个存储引擎,用于直接对接php&SQL查询;
#端口号为3306的进程包括两类数据表,一个是MyISAM表,另一个是Sphinx表;
#这两个表通过对应的ID做JOIN联合查询;
#关于Sphinx表,包括三个进程,分别是indexer、searchd和search。indexer用来创建全文索引,searchd用来启动全文检索服务,负责接受查询,处理查询和返回数据集,search访问全文检索服务,也就是发起查询,之后获取检索结果。假定Sphinx守护进程(也就是Searchd守护进程),端口号为3312;
#Sphinx守护进程包括两个索引,一个是主索引,一个是增量索引;
#增量索引的优点是准实时性,它的缺点是增加查询时的I/O操作,从而牺牲了效率;
#增量索引定期和端口号为3406的服务器进程通信,获取最新的数据变化;
#索引查找依赖于索引的建立,索引技术里面的全文索引依赖于词库(也或者说是词典),词库的核心是分词技术,分词技术主要包括二元法和词库法;
#词库的更新目前主要使用“正向最大匹配”+“逆向最大匹配”,统计学方法和自动维护技术(百科);
#要理解这个模型的关键在于,主库不负责接受查询,但是却接受php的更新操作,php一方面连接数据库作更新操作,一方面与sphinx联合作索引高效搜索,而sphinx索引的建立又依赖于数据库;