Sphinx+MySQL全文检索架构与安装

前言:

本文阐述的是一款经过生产环境检验的千万级数据全文检索(搜索引擎)架构。本文只列出前几章的内容节选,不提供全文内容。

在DELL PowerEdge 6850服务器(四颗64 位Inter Xeon MP 7110N处理器 / 8GB内存)、RedHat AS4 Linux操作系统、MySQL 5.1.26、MyISAM存储引擎、key_buffer=1024M环境下实测,单表1000万条记录的数据量(这张MySQL表拥有int、datetime、varchar、text等类型的10多个字段,只有主键,无其它索引),用主键(PRIMARY KEY)作为WHERE条件进行SQL查询,速度非常之快,只耗费0.01秒。

出自俄罗斯的开源全文搜索引擎软件 Sphinx ,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

基于以上几点,我设计出了这套搜索引擎架构。在生产环境运行了一周,效果非常不错。有时间我会专为配合Sphinx搜索引擎,开发一个逻辑简单、速度快、占用内存低、非表锁的MySQL存储引擎插件,用来代替MyISAM引擎,以解决MyISAM存储引擎在频繁更新操作时的锁表延迟问题。另外,分布式搜索技术上已无任何问题。

一、搜索引擎架构设计:

1、搜索引擎架构图:


2、搜索引擎架构设计思路:

(1)、调用方式最简化:

尽量方便前端Web工程师,只需要一条简单的SQL语句“SELECT ... FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) WHERE query='...';”即可实现高效搜索。

(2)、创建索引、查询速度快:

①、Sphinx Search 是由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行。

Sphinx的特征:

Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒)

高性能搜索(在2-4 GB的文本上搜索,平均0.1秒内获得结果)

高扩展性(实测最高可对100GB的文本建立索引,单一索引可包含1亿条记录)

支持分布式检索

支持基于短语和基于统计的复合结果排序机制

支持任意数量的文件字段(数值属性或全文检索属性)

支持不同的搜索模式(“完全匹配”,“短语匹配”和“任一匹配”)

支持作为Mysql的存储引擎

时间: 2024-09-11 18:40:24

Sphinx+MySQL全文检索架构与安装的相关文章

centos+php+coreseek+sphinx+mysql之一coreseek安装篇_php实例

首先附上coreseek4.1版本下载 前期准备工作: yum install make gcc g++ automake libtool MySQL-client libMySQLclient15-dev libxml2-dev libexpat1-dev autoconf automake libtool 假设我们将文件包下载在 /usr/local/src下 cd /usr/local/src tar zxvf coreseek-4.1-beta.tar.gz cd coreseek-4.

Coreseek + Sphinx + Mysql + PHP构建中文检索引擎

首先明确几个概念 Sphinx是开源的搜索引擎,它支持英文的全文检索.所以如果单独搭建Sphinx,你就已经可以使用全文索引了.但是往往我们要求的是中文索引,怎么做呢?国人提供了一个可供企业使用的,基于Sphinx的中文全文检索引擎.也就是说Coreseek实际上的内核还是Sphinx.那么他们的版本对应呢?   Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本是2010年发布的,它是基于Sphinx0.9.9搜索引擎的.而4.1版本是2011年发布的,它是基于Sphi

高性能mysql主存架构

原文:高性能mysql主存架构 MySQL Replication(Master与Slave基本原理及配置) 主从mysql工作原理: 1:过程: (1)Mysql的复制(replication)是一个异步的复制,从一个Mysql节点复制到另一个Mysql节点.实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程)另外一个进程在 Master(IO进程)上. (2)要实施复制,首先必须打开Master端的binary log功能,否则无法实现.因为整个复制过程实际

MySQL数据库主从同步安装与配置总结

MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力: ②在从主服务器进行备份,避免备份期间影响主服务器服务: ③当主服务器出现问题时,可以切换到从服务器. 所以我在项目部署和实施中经常会采用这种方案. + 数据库目录及其它 my.cnf配置文件     /etc/my.cnf mysql数据库位置    datadir=/var/lib/mysql 主数据库:192.168.2.119 从数据库:192.168.2.220 操作

Windows 2000+Apache+MySql+PHP3+PHP4+PERL安装使用小结(转)

apache|mysql|perl|window Windows 2000+Apache+MySql+PHP3+PHP4+PERL安装使用小结www.1000script.com 2002-9-3 1000script专业脚本Windows 2000+Apache+MySql+PHP3+PHP4+PERL安装使用小结(一) 这里一定有许多和我一样喜欢尝试新鲜事物的朋友,尤其是当听说 某某软件有了新的版本时一定也会迫不及待的去下载一份回来用用再说. 这里我想和大家探讨一下以下流行软件的应用,意在抛

mysql dba系统学习(1)mysql各版本编译安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库.由于其社区

MySQL技术架构介绍

金璞:各位网友大家好!我是赛迪网技术应用编辑金璞,今天本来要来的David Axmark先生和周总现在正在路上,预计可能和迟一点跟网友们见面现在我们请陈慧女士做一个自我介绍. 陈慧:我是万里开源的系统工程师陈慧,很高兴作客赛迪网. 金璞:因为David Axmark和周总还没有来,前天的时候MySQL在中国研发中心成立的时候,我当时听到您做了一个演讲,也讲了MySQL技术上的架构包括以后的发展方向之类的.今天先跟网友们讲一讲吧. 陈慧:我们万里开源是MySQL在中国唯一的代理,我们是基于Linu

CentOS6.4系统中Mysql数据库卸载、安装与配置

  就像Windows server 2003,2008中一般安装的是Sql Server 数据库,在linux系统中一般安装的是mysql数据库,而且Mysql数据库的第一个版本就是发行在Linux系统上的. 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL的SQL语言是用于访问数据

mysql逻辑架构及存储引擎简介

  MySQL逻辑架构: 并发控制:由锁实现 读锁:也叫共享锁,读锁互相不阻塞.A加锁表后A,b,c,d都能读该表但不能写该表. 写锁:也叫排他锁,写锁相互阻塞.A加排他锁后,其他线程不能读写该表. 锁粒度: 表锁:锁一个表,并发粒度小.代表存储引擎MyISAM 行锁:锁一行数据,并发粒度大,并发操作表性能好.代表存储引擎InnoDB.锁粒度小系统对锁的开销也大. 假如给一个表加读锁,那么其他线程也无法对该表进行写操作了,如果是加行锁那么该线程只阻塞只对这一行数据的读写,表中其他行的数据其他线程