斯芬克斯(sphinx) mysql全文搜索引擎
一、 Sphinx简介
Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。
Sphinx的特性如下:
a) 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);
b) 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);
c) 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档);
d) 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;
e) 支持分布式搜索;
f) 支持短语搜索
g) 提供文档摘要生成
h) 可作为MySQL的存储引擎提供搜索服务;
i) 支持布尔、短语、词语相似度等多种检索模式;
j) 文档支持多个全文检索字段(最大不超过32个);
k) 文档支持多个额外的属性信息(例如:分组信息,时间戳等);
l) 支持断词;
虽然mysql的MYISAM提供全文索引,但是性能却不敢让人恭维,另外数据库毕竟不是很善于做这样的事情,我们需要把这些活让给更适合的程序去做,减少数据库的压力。因此采用Sphinx来做mysql的全文索引工具是一个很好的选择。这个星期主要来学习这个这个工具的使用,下面将学习过程大致的记录一下,做个备忘,也希望能对学习这个工具的其他朋友有所启发。
二、 Sphinx安装
Sphinx在mysql上的应用有两种方式:
1. 采用API调用,如使用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,服务端进程“低耦合”,且程序可灵活、方便的调用;缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
2. 使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端。不必二次查询,在程序上仅需要修改对应的sql,但这对使用框架开发的程序很不方便,比如使用了ORM。另外还需要对mysql进行重新编译,且需要mysql-5.1以上版本支持插件存储。
这里的安装主要介绍的是第一种通过api调用的方式。Sphinx的安装如下:
#下载最新稳定版
wgethttp://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中文分词
中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。中文分词主要有2个插件
1. Coreseek
Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg ,是基于sphinx的基础上开发的。
2. sfc(Sphinx-for-chinese)
sfc(sphinx-for-chinese)是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict。
本文主要介绍Coreseek的安装方法
四、 Coreseek(支持中文检索的sphinx)安装
1. 安装升级autoconf
因为coreseek需要autoconf2.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
2. 下载coreseek
新版本的coreseek将词典和sphinx源程序放在了一个包中,因此只需要下载coreseek包就可以了。
wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
3. 安装mmseg(coreseek所使用的词典)
tar xzvf coreseek-3.2.14.tar.gzcd mmseg-3.2.14./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决./configure --prefix=/usr/local/mmseg3make && make installcd ..
4. 安装coreseek(sphinx)
cd csft-3.2.14sh 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-mysqlmake && make installcd ..
5. 测试mmseg分词和coreseek搜索
备注:需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文,我的系统字符集为en_US.UTF-8也是可以的。
cd testpackcat var/test/test.xml #此时应该正确显示中文/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etcvar/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 hits2. '搜索': 2 documents, 5 hits
6. 生成 mmseg词库及配置文件
新版本的已经自动生成。
五、 参考文章:
Sphinx中文指南
http://www.sphinxsearch.org/sphinx-tutorial
Sphinx中文分词应用
http://www.sphinxsearch.org/archives/82
Sphinx 0.9.8参考手册
CoreSeek BSD/Linux下的安装
http://www.coreseek.cn/products/products-install/install_on_bsd_linux/
声明:原文章链接:https://blog.csdn.net/lansetiankong12/article/details/46376695
斯芬克斯(sphinx) mysql全文搜索引擎相关推荐
- mysql搜索斯芬克斯_如何用sphinx正确搜索数字?
我需要在mysql中搜索十亿条记录,这是一个很长的过程(现在可以了).斯芬克斯能帮我吗?如何正确配置sphinx的搜索号码?是否应使用整数属性进行搜索(而不是字符串字段)? 我只需要获取时间戳&quo ...
- php斯芬克斯,斯芬克斯之迷——ie私有属性haslayout的困扰
就象神话中的斯芬克斯一样,ie的私有属性haslayout是个神秘且让人困惑的难缠东西,她只游荡于ie(这片沙漠)之下. 她无法使用css声明直接创建.即便是对于ie,她也不能说是一个实实在在存在的属 ...
- 人工智能的“斯芬克斯之谜”
首发于微信公众号:一刻AI 在希腊神话中,赫拉派斯芬克斯坐在忒拜城附近的悬崖上,拦住过往的路人,用缪斯所传授的谜语问他们,猜不中者就会被它吃掉,这个谜语是:"什么动物早晨用四条腿走路,中午用 ...
- php斯芬克斯,找回自我 走出斯芬克斯之谜
找回自我 走出斯芬克斯之谜 何期自性,本自清净:何期自性,本无生灭:何期自性,本自具足:何期自性,本无动摇:何期自性,能生万法.这是六祖慧能大师大彻大悟时写的一首偈子,他告诉我们,我们的自性本来清净, ...
- Sphinx(斯芬克斯的安装及使用)
1.说明: Sphinx是一个基于SQL的全文检索引擎,可以结合 MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索.Sphin ...
- sphinx(斯芬克斯)mysql全文搜索引擎
一. Sphinx简介 windows 下载 http://sphinxsearch.com/downloads/current/ Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个 ...
- mysql 不用斯芬克斯 全局模糊匹配 查询
mySQL 4.x以上提供了全文检索支持 MATCH --AGAINST 模式(不区分大小写) 建立全文索引的表的存储引擎类型必须为MyISAM 问题是match against对中文模糊搜索支持 ...
- MySQL全文搜索引擎mysqlcft
MySQL在高并发连接.数据库记录数较多的情况下,SELECT - WHERE - LIKE '%-%'的全文搜索方式不仅效率差,而且以通配符%开头作查询时,使用不到索引,需要全表扫描,对数据库的压力 ...
- Sphinx (Sphinx(斯芬克司))
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索.Sphinx特别为一些脚 ...
最新文章
- Android输入法遮挡了输入框,使用android:fitsSystemWindows=“true“后界面顶部出现白条解决方案
- 计数信号量的原理与创建
- 多进程/多线程同时向一个文件中写入日志如何避免冲突?
- 办公技巧:EXCEL10个常用函数介绍
- html下拉菜单的子目录,html - 带有下拉菜单的子菜单的垂直下拉菜单 - 堆栈内存溢出...
- Liunx中虚拟机远程复制文件SCP命令
- Bitmap对图像的处理
- 前端逼死强迫症系列之javascript
- linux系统fsck.ext4,Ext4文件系统fsck后损坏修复过程一例
- 微信云控的大触来一下
- Scan Reorder Formal
- [css] 你有使用过vmax和vmin吗?说说你对它们的理解
- CentOS7/rhel7 T440P 控制散热风扇转速等级
- 算法解析—同向双指针 字节笔试 万万没想到抓捕孔联顺,列表最大间隔不超过D
- 该战斗的时候战斗,该转身的时候转身,但请保持优雅
- Python使用天气网api接口获取天气数据
- 面试造火箭,秋招建大楼!阿里新出《Java权威面试指南》堪称精品!
- abaqus python_ABAQUS中的python语言入门
- 读手语图像识别论文笔记
- Linux中vgextend的含义,vgextend(8)
热门文章
- 教你如何用好MindMapper
- 【Accumulation】The definition of SISR
- 美发店为什么需要做线上预约系统
- 英文个人简历中英文词汇对照大全
- 资质认证|棱镜七彩成功通过CMMI 3级认证,研发能力获国际权威机构认可!
- 微信WeUI扩展组件
- 使用javax.servlet.http.Part类上传文件
- vivo S12 Pro评测:一首在冷暖交融之间流转的华丽舞曲
- [学习笔记]Python for Data Analysis, 3E-8.数据整理:连接、合并和重塑
- iastora怎么改成ahci_怎么把硬盘更改成ahci模式 AHCI功能开启方法