桂林网站开发公司,刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚,备案编号在哪里能看到,企业做网站好吗Sphinx#xff0c;单一索引最大可包含1亿条记录#xff0c;在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为#xff1a;创建100万条记录的索引只需3#xff5e;4分钟#xff0c;创建1000万条记录的索引可以在50分钟内完成#xff0c;而只包含最新…Sphinx单一索引最大可包含1亿条记录在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为创建100万条记录的索引只需34分钟创建1000万条记录的索引可以在50分钟内完成而只包含最新10万条记录的增量索引重建一次只需几十秒。基于以上几点我设计出了这套搜索引擎架构。在生产环境运行了一周效果非常不错。有时间我会专为配合Sphinx搜索引擎开发一个逻辑简单、速度快、占用内存低、非表锁的MySQL存储引擎插件用来代替MyISAM引擎以解决MyISAM存储引擎在频繁更新操作时的锁表延迟问题。另外分布式搜索技术上已无任何问题。一、搜索引擎架构设计1、搜索引擎架构图 2、搜索引擎架构设计思路(1)、调用方式最简化尽量方便前端Web工程师只需要一条简单的SQL语句“SELECT ... FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_idmyisam_table.id) WHERE query...;”即可实现高效搜索。(2)、创建索引、查询速度快①、Sphinx Search 是由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包在GPL与商业协议双许可协议下发行。Sphinx的特征•Sphinx支持高速建立索引(可达10MB/秒而Lucene建立索引的速度是1.8MB/秒)•高性能搜索(在2-4 GB的文本上搜索平均0.1秒内获得结果)•高扩展性(实测最高可对100GB的文本建立索引单一索引可包含1亿条记录)•支持分布式检索•支持基于短语和基于统计的复合结果排序机制•支持任意数量的文件字段(数值属性或全文检索属性)•支持不同的搜索模式(“完全匹配”“短语匹配”和“任一匹配”)•支持作为Mysql的存储引擎②、通过国外《High Performance MySQL》专家组的测试可以看出根据主键进行查询的类似“SELECT ... FROM ... WHERE id ...”的SQL语句(其中id为PRIMARY KEY)每秒钟能够处理10000次以上的查询而普通的SELECT查询每秒只能处理几十次到几百次 ③、Sphinx不负责文本字段的存储。假设将数据库的id、date、title、body字段用sphinx建立搜索索引。根据关键字、时间、类别、范围等信息查询一下sphinxsphinx只会将查询结果的ID号等非文本信息告诉我们。要显示title、body等信息还需要根据此ID号去查询MySQL数据库或者从Memcachedb等其他的存储中取得。安装SphinxSE作为MySQL的存储引擎将MySQL与Sphinx结合起来是一种便捷的方法。创建一张Sphinx类型表将MyISAM表的主键ID和Sphinx表的ID作一个JOIN联合查询。这样对于MyISAM表来所只相当于一个WHERE id...的主键查询WHERE后的条件都交给Sphinx去处理可以充分发挥两者的优势实现高速搜索查询。(3)、按服务类型进行分离为了保证数据的一致性我在配置Sphinx读取索引源的MySQL数据库时进行了锁表。Sphinx读取索引源的过程会耗费一定时间由于MyISAM存储引擎的读锁和写锁是互斥的为了避免写操作被长时间阻塞导致数据库同步落后跟不上我将提供“搜索查询服务”的和提供“索引源服务”的MySQL数据库进行了分开。监听3306端口的MySQL提供“搜索查询服务”监听3406端口的MySQL提供“索引源服务”。(4)、“主索引增量索引”更新方式一般网站的特征信息发布较为频繁刚发布完的信息被编辑、修改的可能性大两天以前的老帖变动性较小。基于这个特征我设计了Sphinx主索引和增量索引。对于前天17:00之前的记录建立主索引每天凌晨自动重建一次主索引对于前天17:00之后到当前最新的记录间隔3分钟自动重建一次增量索引。(5)、“Ext3文件系统tmpfs内存文件系统”相结合为了避免每3分钟重建增量索引导致磁盘IO较重从而引起系统负载上升我将主索引文件创建在磁盘增量索引文件创建在tmpfs内存文件系统“/dev/shm/”内。“/dev/shm/”内的文件全部驻留在内存中读写速度非常快。但是重启服务器会导致“/dev/shm/”内的文件丢失针对这个问题我会在服务器开机时自动创建“/dev/shm/”内目录结构和Sphinx增量索引。(6)、中文分词词库我根据“自整理的中文分词库”“搜狗拼音输入法细胞词库”“LibMMSeg高频字库”... 综合整理成一份中文分词词库出于某些考虑暂不提供。你可以使用LibMMSeg自带的中文分词词库。二、MySQLSphinxSphinxSE安装步骤1、安装python支持(以下针对CentOS系统其他Linux系统请使用相应的方法安装)yum install -y python python-devel2、编译安装LibMMSeg(LibMMSeg是为Sphinx全文搜索引擎设计的中文分词软件包其在GPL协议下发行的中文分词法采用Chih-Hao Tsai的MMSEG算法。LibMMSeg在本文中用来生成中文分词词库。)以下压缩包“sphinx-0.9.8-rc2-chinese.zip”中包含mmseg-0.7.3.tar.gz、sphinx-0.9.8-rc2.tar.gz以及中文分词补丁。下载文件 (已下载 7 次)unzip sphinx-0.9.8-rc2-chinese.ziptar zxvf mmseg-0.7.3.tar.gzcd mmseg-0.7.3/./configuremakemake installcd ../3、编译安装MySQL 5.1.26-rc、Sphinx、SphinxSE存储引擎wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/tar zxvf mysql-5.1.26-rc.tar.gztar zxvf sphinx-0.9.8-rc2.tar.gzcd sphinx-0.9.8-rc2/patch -p1 ../sphinx-0.98rc2.zhcn-support.patchpatch -p1 ../fix-crash-in-excerpts.patchcp -rf mysqlse ../mysql-5.1.26-rc/storage/sphinxcd ../cd mysql-5.1.26-rc/sh BUILD/autorun.sh./configure --with-pluginssphinx --prefix/usr/local/mysql-search/ --enable-assembler --with-extra-charsetscomplex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infilemake make installcd ../cd sphinx-0.9.8-rc2/CPPFLAGS-I/usr/include/python2.4LDFLAGS-lpython2.4./configure --prefix/usr/local/sphinx --with-mysql/usr/local/mysql-searchmakemake installcd ../mv /usr/local/sphinx/etc/sphinx.conf /usr/local/sphinx/etc/sphinx.conf.old第二章第3节之后的正文内容不予公布全文的目录如下(共24页)