Sphinx : 高性能SQL全文检索引擎

分类 编程技术

Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。

Sphinx的特点

  • 快速创建索引:3分钟左右即可创建近100万条记录的索引,并且采用了增量索引的方式,重建索引非常迅速。
  • 闪电般的检索速度:尽管是1千万条的大数据量,查询数据的速度也在毫秒级以上,2-4G的文本量中平均查询速度不到0.1秒。
  • 为很多脚本语言设计了检索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分编程应用中很方便地调用Sphinx的相关接口。
  • 为MySQL设计了一个存储引擎插件,因此如果你在MySQL上使用Sphinx,那简直就方便到家了。
  • 支持分布式搜索,可以横向扩展系统性能。

PHP+MySQL+Sphinx 搜索引擎架构图

MySQL中安装Sphinx

Sphinx在MySQL上安装有两种方式:

  • 第一种方式是采用API调用,我们可以使用PHP,Python,Perl,Ruby等编程语言的API函数进行查询,这种方式不必重新编译MySQL,模块间改动比较少,相对灵活。
  • 第二种需要重新编译MySQL,将Sphinx以插件的方式编译到MySQL中去,这种方式对程序改动比较少,仅仅需要改动SQL语句即可,但前提是你的MySQL版本必须在5.1以上。

下面是第一种安装方式:

#下载最新稳定版

wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

tar xzvf sphinx-0.9.9.tar.gz

cd sphinx-0.9.9

./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64

make

make install

Sphinx中文分词插件Coreseek安装

注:coreseek的安装教程来自这里,下面是详细过程:

安装升级autoconf

因为coreseek需要autoconf 2.64以上版本,因此需要升级autoconf,不然会报错。从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法如下:

tar -jxvf autoconf-2.64.tar.bz2

cd autoconf-2.64

./configure

make

make install

下载coreseek

新版本的coreseek将词典和sphinx源程序放在了一个包中,因此只需要下载coreseek包就可以了。

wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz

安装mmseg(coreseek所使用的词典)

tar xzvf coreseek-3.2.14.tar.gz

cd mmseg-3.2.14

./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/mmseg3

make && make install

cd ..

安装coreseek(sphinx)

cd csft-3.2.14

sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql

make && make install

cd ..

测试mmseg分词和coreseek搜索

备注:需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文,我的系统字符集为en_US.UTF-8也是可以的。

cd testpack

cat var/test/test.xml  #此时应该正确显示中文

/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml

/usr/local/coreseek/bin/indexer -c etc/csft.conf --all

/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索

此时正确的应该返回

words:

1. '网络': 1 documents, 1 hits

2. '搜索': 2 documents, 5 hits

Spinx配置:

制作一个配置文件

cd /usr/local/sphinx/etc/

cp sphinx.conf.dist sphinx.conf

然后编辑配置文件

Coreseek配置:

cd /usr/local/coreseek/

cp sphinx.conf.dist csft.conf

然后编辑

Vim  csft.conf

Shhinx模块的安装:

模块版本: sphinx-1.3.3.tgz

tar xf sphinx-1.3.3.tgz

cd sphinx-1.3.3/
/usr/local/php/bin/phpize

./configure
--with-php-config=/usr/local/php/bin/php-config --with-sphinx

Make && make install

然后会生成一个sphinx.so文件将这个文件放到

Vim /usr/local/php/etc/php.ini

如果不想安装sphinx模块的话,则可以复制出来sphinx类来实例化直接使用

/coreseek-3.2.14/csft-3.2.14/api/
sphinxapi.php

/usr/local/coreseek/bin/searchd

如查报这些错不用管:

WARNING: stopwords: failed to get file size
for 'G:\data\stopwords.txt'

WARNING: index 'test1': failed to stat
G:\data\wordforms.txt: No such file or directory

WARNING: stopwords: failed to get file size
for 'G:\data\stopwords.txt'

WARNING: index 'test1stemmed': failed to
stat G:\data\wordforms.txt: No such file or directory

WARNING: multiple addresses found for
'localhost', using the first one (ip=127.0.0.1)

实时查询的配置

  1. 主数据数据  | 增量数据
  2. 主索引      | 增量索引

Sphinx与coreseek的更多相关文章

  1. sphinx中文版Coreseek中文检索引擎安装和使用方法(Linux)

    sphinx中文版Coreseek中文检索引擎安装和使用方法(Linux)     众所周知,在MYSQL数据库中,如果你在百万级别数据库中使用 like 的话那你一定在那骂娘,coreseek是一个 ...

  2. sphinx和coreseek

    sphinx是国外的一款搜索软件. coreseek是在sphinx的基础上,增加了中文分词功能,换句话说,就是支持了中文. Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本 ...

  3. Sphinx和coreseek检索引擎

    Sphinx是检索英文用,coreseek是检索中文用. Sphinx(斯芬克斯)是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索 ...

  4. Sphinx 之 Coreseek、Sphinx-for-chinaese、Sphinx+Scws 评测

    Sphinx是一个基于SQL的全文检索引擎:普遍使用于很多网站:但由于中英文的差异,其本身,对中文的支持并不好.主要体现在对一段话断词:英文只需按照空格对其分词即可:但对于博大精深的中文来说,却是件困 ...

  5. ubuntu上 安装 基于sphinx 的 coreseek 全文搜索

    原生sphinx不支持中文, sphinx-for-chinese匹配中文时也不返回结果 ,真纠结,  最好试了 coreseek,这个能正确返回结果了, 所以记录一下 1 http://www.co ...

  6. sphinx (coreseek)——3、区段查询 与 增量索引实例

    首先本文测试数据100多万的域名的wwwtitle 信息  检索数据: 首先建立临时表格: CREATE TABLE `sph_counter` ( `index_id` ) NOT NULL, `m ...

  7. sphinx (coreseek)——2、区段查询实例

    首先需要知道区段查询的定义: 索引系统需要通过主查询来获取全部的文档信息,一种简单的实现是将整个表的数据读入内存,但是这可能导致整个表被锁定并使得其他操作被阻止(例如:在MyISAM格式上的INSER ...

  8. sphinx(coreseek)——1、增量索引

    首先介绍一下     CoreSeek/Sphinx的发布包 indexer: 用于创建全文索引;    search: 一个简单的命令行(CLI) 的测试程序,用于测试全文索引;    search ...

  9. 安装sphinx和coreseek

    sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数 ...

  10. Sphinx以及coreseek的安装及使用

    检索结构 php -> sphinx -> mysql 非结构化数据又叫全文数据,非固定长度字段例如文章标题搜索这类适用sphinx 全文数据搜索: 1 顺序扫描 : 如like查找 2 ...

随机推荐

  1. fastcgi+lighttpd+c语言 实现搜索输入提示

    1.lighttpd 服务器 lighttpd是一个比较轻量的服务器,在运行fastcgi上效率较高.lighttpd只负责投递请求到fastcgi. centos输入yum install ligh ...

  2. python:序列与模块

    一,序列化模块 什么叫序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就 ...

  3. 手机验证码免费10条\java、C#、html....

    使用互亿无线短信接口网址:http://www.ihuyi.com/. 首先第一步,进行注册 第二步:注册成功后进来的页面 第三步:实名认证 第四步:个人信息 等待认证成功后才能继续操作 第五步:进行 ...

  4. lucene&solr学习——solr学习(一)

    1.什么是solr solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文检索服务器.Solr提供了比lucene风味丰富的查询语言,同时实现了可配置,可扩展,并对索 ...

  5. sql字段为datetime,插入''的时候默认为1900年

    Microsoft SQL Server Database Engine 用两个 4 字节的整数内部存储 datetime 数据类型的值. 第一个 4 字节存储“基础日期”(即 1900 年 1 月  ...

  6. android 界面控件 textview 全解

    textview基本使用: <TextView 10. android:id="@+id/txtOne" 11. android:layout_width="200 ...

  7. Viewpager实现今日头条顶部导航的功能

    利用简单的Textview 和Viewpager实现滑动.点击换页的效果,效果图如下: 先上布局文件代码: <?xml version="1.0" encoding=&quo ...

  8. Oracle树形结构数据---常见处理情景

    Oracle树形结构数据---常见处理情景 1.查看表数据结构 SELECT *      FROM QIANCODE.TREE_HIS_TABLE T  ORDER BY T.NODE_LEVEL; ...

  9. spring入门(六) spring mvc+mybatis

    1.引入依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> < ...

  10. zepto 基础知识(6)

    101.$.ajax $.ajax(options) 类型:XMLttpRequest 执行Ajax请求.他可能是本地资源,或者通过支持HTTP access control的浏览器 或者通过 JSO ...