Sphinx全文检索引擎使用指南:MySQL存储引擎

6.1. SphinxSE概览

SphinxSE是一个可以编译进 MySQL 5.x版本的MySQL存储引擎,它利用了该版本MySQL的插件式体系结构。SphinxSE不能用于 MySQL 4.x系列,它需要MySQL 5.0.22或更高版本;或 MySQL 5.1.12或更高版本。

尽管被称作“存储引擎”,SphinxSE自身其实并不存储任何数据。它其实是一个允许 MySQL服务器与searchd交互并获取搜索结果的嵌入式客户端。所有的索引和搜索都发生在 MySQL之外。

显然,SphinxSE的适用于:

?使将 MySQL FTS应用程序移植到Sphinx

?使没有 Sphinx API的那些语言也可以使用Sphinx

?当需要在MySQL端对 Sphinx结果集做额外处理(例如对原始文档表做JOIN,MySQL端的额外过滤等等)时提供优化

6.2.安装SphinxSE

您需要搞到一份 MySQL的源码,并重新编译MySQL。MySQL源码(mysql-5.x.yy.tar.gz)可在dev.mysql.com网站获得。

针对某些版本的MySQL,Sphinx 网站提供了包含支持SphinxSE的打过补丁 tarball压缩包。将这些文件解压出来替换原始文件,就可以配置(configure)、构建(build)以生成带有内建 Shpinx支持的MySQL了。

如果网站上没有对应版本的tarball,或者由于某种原因无法工作,那您可能需要手工准备这些文件。您需要一份安装好的GUN Autotools框架(autoconf,automake和libtool)来完成这项任务。

6.2.1. 在MySQL 5.0.x上编译SphinxSE

如果使用我们事先做好的打过补丁的tarball,那请跳过步骤 1-3

1. 将 sphinx5.0.yy.diff补丁文件复制到MySQL源码目录并运行

patch -p1 < sphinx.5.0.yy.diff

如果没有与您的MySQL版本完全匹配的.diff文件,请尝试一个最接近版本的.diff文件。确保补丁顺利应用,没有 rejects。

2. MySQL源码目录中运行

sh BUILD/autorun.sh

3. MySQL源码目录中建立sql/sphinx目录,并把 Sphinx源码目录中mysqlse目录下的全部文件拷贝到这个目录。

cp

-R /root/builds/sphinx-0.9.7/mysqlse /root/builds/mysql-5.0.24/sql/sphinx

4. 配置(configure)MySQL,启用Sphinx引擎

./configure --with-sphinx-storage-engine

5. 构建(build)并安装MySQL

make

make install

6.2.2.在MySQL 5.1.x上编译SphinxSE

如果使用我们事先做好的打过补丁的tarball,那请跳过步骤 1-3

1. MySQL源码目录中建立storage/sphinx目录,并将 Sphinx源码目录中的mysqlse目录下的全部文件拷贝到这个目录。

cp

-R /root/builds/sphinx-0.9.7/mysqlse /root/builds/mysql-5.1.14/storage/sph inx

2. MySQL源码目录运行

sh BUILD/autorun.sh

3. 配置(configure)MySQL,启用Sphinx引擎

./configure --with-plugins=sphinx

4. 构建(build)并安装MySQL

make

make install

时间: 2024-11-08 19:13:50

Sphinx全文检索引擎使用指南:MySQL存储引擎的相关文章

基于Mysql存储引擎的深入分析_Mysql

MySQL有很多种存储引擎,针对不同的应用,可以为每张表选择合适的存储引擎,这样有助于提升MySQL性能.创建新闻表news: 复制代码 代码如下: CREATE  TABLE `sandbox`.`news` (      `id` INT NOT NULL AUTO_INCREMENT ,      `name` VARCHAR(45) NULL ,          `content` VARCHAR(45) NULL ,      `created` VARCHAR(45) NULL ,

《MySQL技术内幕:InnoDB存储引擎第2版》——1.3 MySQL存储引擎

1.3 MySQL存储引擎 通过1.2节大致了解了MySQL数据库独有的插件式体系结构,并了解到存储引擎是MySQL区别于其他数据库的一个最重要特性.存储引擎的好处是,每个存储引擎都有各自的特点,能够根据具体的应用建立不同存储引擎表.对于开发人员来说,存储引擎对其是透明的,但了解各种存储引擎的区别对于开发人员来说也是有好处的.对于DBA来说,他们应该深刻地认识到MySQL数据库的核心在于存储引擎. 由于MySQL数据库的开源特性,用户可以根据MySQL预定义的存储引擎接口编写自己的存储引擎.若用

浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析_Mysql

下面先让我们回答一些问题: ◆你的数据库有外键吗? ◆你需要事务支持吗? ◆你需要全文索引吗? ◆你经常使用什么样的查询模式? ◆你的数据有多大? 思考上面这些问题可以让你找到合适的方向,但那并不是绝对的.如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式.如果你需要全文索引,那么通常来说 MyISAM是好的选择,因为这是系统内建的,然而,我们其实并不会经常地去测试两百万行记录.所以,就算是慢一点,我们可以通过使用Sphinx从InnoDB中获得全文索引. 数据的大小,是一个影响你

mysql dba系统学习(21)mysql存储引擎InnoDB

mysql存储引擎InnoDB 1,主体系结构: 默认7个后台线程,4个io thread(insert buffer.log.read.write),1个master thread(优先级最高),1个锁(lock)监控线程,1个错误监控线程.可以通过show engine innodb status来查看.新版本已对默认的read thread和write thread分别增大到4个,可通过show variables like 'innodb_io_thread%'查看. 存储引擎组成: 缓

mysql dba系统学习(20)mysql存储引擎MyISAM

mysql存储引擎MyISAM 1,创建myisam表 mysql> create table t (id int , name varchar(30) , msg varchar(100)) engine = MyISAM; mysql> show table status like "t" \G ; *************************** 1. row *************************** Name: t Engine: MyISAM

如何选择合适的MySQL存储引擎

MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED.ARCHIVE.CSV.BLACKHOLE. MySQL支持数个存储引擎作为对不同表的类型的处理器.MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: ◆ MyISAM管理非事务表.它提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个

Mysql存储引擎InnoDB和Myisam的六大区别

 这篇文章主要介绍了Mysql存储引擎InnoDB和Myisam的六大区别,本文从构成上.事务处理.SQL操作.自动ID.表行数等方面讲解了它的区别,需要的朋友可以参考下       MyISAM InnoDB 构成上的区别:     每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型.   .frm文件存储表定义. 数据文件的扩展名为.MYD (MYData). 索引文件的扩展名是.MYI (MYIndex).   基于磁盘的资源是InnoDB表空间数据

Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文章讲的是TokuDB,不是innodb,相比innodb,TokuDB有着自己的特点. BTree和Fractal tree的比较: 目前无论是SQL Server,还是MySQL的innodb,都是用的B+Tree(SQL Server用的是标准的B-Tree)的索引结构.从理论上来说,这个结构在

如何选择合适的MySQL存储引擎_Mysql

MySQL支持数个存储引擎作为对不同表的类型的处理器.MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: ◆ MyISAM管理非事务表.它提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎. ◆ MEMORY存储引擎提供"内存中"表.MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表.就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引