Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。
Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。
Sphinx的主要特性包括:
高速索引 (在新款CPU上,近10 MB/秒); 高速搜索 (2-4G的文本量中平均查询速度不到0.1秒); 高可用性 (单CPU上最大可支持100 GB的文本,100M文档); 提供良好的相关性排名 支持分布式搜索; 提供文档摘要生成; 提供从MySQL内部的插件式存储引擎上搜索 支持布尔,短语, 和近义词查询; 支持每个文档多个全文检索域(默认最大32个); 支持每个文档多属性; 支持断词; 支持单字节编码与UTF-8编码;
Sphinx的工作原理
Sphinx的整个工作流程就是Indexer程序到数据库里面提取数据,对数据进行分词,然后根据生成的分词生成单个或多个索引,并将它们传递给searchd程序。然后客户端可以通过API调用进行搜索。
为什么使用Sphinx
遇到一个类似这样的需求:用户可以通过文章标题和文章搜索到一片文章的内容,而文章的标题和文章的内容分别保存在不同的库,而且是跨机房的。
可选方案
A、直接在数据库实现跨库LIKE查询
优点:简单操作 缺点:效率较低,会造成较大的网络开销
B、结合Sphinx中文分词搜索引擎
优点:效率较高,具有较高的扩展性 缺点:不负责数据存储
使用Sphinx搜索引擎对数据做索引,数据一次性加载进来,然后做了所以之后保存在内存。这样用户进行搜索的时候就只需要在Sphinx服务器上检索数据即可。而且,Sphinx没有MySQL的伴随机磁盘I/O的缺陷,性能更佳。
其他典型使用场景
1、快速、高效、可扩展和核心的全文检索
数据量大的时候,比MyISAM和InnoDB都要快。 能对多个源表的混合数据创建索引,不限于单个表上的字段。 能将来自多个索引的搜索结果进行整合。 能根据属性上的附加条件对全文搜索进行优化。
2、高效地使用WHERE子句和LIMIT字句
当在多个WHERE条件做SELECT查询时,索引选择性较差或者根本没有索引支持的字段,性能较差。sphinx可以对关键字做索引。区别是,MySQL中,是内部引擎决定使用索引还是全扫描,而sphinx是让你自己选择使用哪一种访问方法。因为sphinx是把数据保存到RAM中,所以sphinx不会做太多的I/O操作。而mysql有一种叫半随机I/O磁盘读,把记录一行一行地读到排序缓冲区里,然后再进行排序,最后丢弃其中的绝大多数行。所以sphinx使用了更少的内存和磁盘I/O。
3、优化GROUP BY查询
在sphinx中的排序和分组都是用固定的内存,它的效率比类似数据集全部可以放在RAM的MySQL查询要稍微高些。
4、并行地产生结果集
sphinx可以让你从相同数据中同时产生几份结果,同样是使用固定量的内存。作为对比,传统SQL方法要么运行两个查询,要么对每个搜索结果集创建一个临时表。而sphinx用一个multi-query机制来完成这项任务。不是一个接一个地发起查询,而是把几个查询做成一个批处理,然后在一个请求里提交。
5、向上扩展和向外扩展
向上扩展:增加CPU/内核、扩展磁盘I/O 向外扩展:多个机器,即分布式sphinx
6、聚合分片数据
适合用在将数据分布在不同物理MySQL服务器间的情况。 例子:有一个1TB大小的表,其中有10亿篇文章,通过用户ID分片到10个MySQL服务器上,在单个用户的查询下当然很快,如果需要实现一个归档分页功能,展示某个用户的所有朋友发表的文章。那么就要同事访问多台MySQL服务器了。这样会很慢。而sphinx只需要创建几个实例,在每个表里映射出经常访问的文章属性,然后就可以进行分页查询了,总共就三行代码的配置。
相关推荐
Sphinx以其高效、灵活和可扩展性著称,广泛应用于网站、数据库和各类信息系统中。 1. **Sphinx安装**: 安装Sphinx通常涉及下载源代码,编译并安装。首先,你需要访问Sphinx的官方网站获取最新版本的源代码。然后...
Sphinx是一个高性能、开源的全文检索引擎,专为配合SQL数据库而设计,如MySQL和PostgreSQL,用于实现高效且专业的全文搜索功能。它的核心优势在于能够提供比数据库原生搜索更强大的搜索性能,并且易于集成到各种使用...
1. **PocketSphinx介绍** PocketSphinx是CMU Sphinx(卡内基梅隆大学Sphinx)项目的一部分,它是一个轻量级的解码器,特别适合嵌入式设备。它的主要优点是能够离线运行,不依赖云端服务,因此对于数据隐私和网络...
Sphinx介绍 Sphinx是一款开源的实时全文搜索引擎,具有高效、灵活和高度可定制的特点。它支持多种编程语言的API,包括PHP,使得在Web应用中集成搜索变得简单。 ### 2. CoreSeek介绍 CoreSeek是基于Sphinx的中文...
1. **CMU Sphinx介绍** CMU Sphinx是由卡内基梅隆大学开发的一套开源语音识别框架,它包含了一系列的语音处理工具,如声学模型训练、语言模型构建等。PocketSphinx是其在嵌入式系统和移动设备上的优化版本,对资源...
1. **PocketSphinx介绍**:PocketSphinx是CMU Sphinx(卡内基梅隆大学的Sphinx)项目的一部分,专门针对嵌入式系统和移动设备进行了优化。它支持实时连续语音识别,可以处理多种语言,并且支持自定义词汇表和语言...
1. **Sphinx介绍**:Sphinx是一个基于Python的文档生成工具,它被广泛用于Python项目的文档编写。Sphinx通过解析结构化的文本文件(如reStructuredText)生成HTML、PDF、EPUB等多种格式的文档。 2. **...
**Sphinx介绍** Sphinx是一个用于创建高质量文档的工具,特别适合于技术文档的编写。它支持多种输出格式,如HTML、PDF、Epub等,并且有丰富的主题和扩展支持。Sphinx通过`reStructuredText`(reST)语法来编写文档...
**Sphinx介绍** Sphinx是一个强大的文档生成工具,广泛用于编写技术文档、项目手册以及API文档。它使用简洁明了的ReStructuredText (reST) 格式编写源文件,然后生成HTML、PDF、EPUB等多种格式的文档,支持自定义...
介绍sphinx实时索引的特点和工作机制
### Sphinx 中英文分词检索介绍 #### 一、Sphinx简介 Sphinx是一款高性能的全文检索引擎,能够显著提升在大型数据库中进行全文检索的速度。它最初由Andrew Aksyonoff设计并开发,旨在解决MySQL数据库在处理大量文本...
2. PocketSphinx介绍: PocketSphinx是CMU Sphinx针对嵌入式设备,特别是移动设备设计的一个轻量级版本。它的目标是低资源消耗和快速响应,使得在Android手机和平板电脑上实时语音识别成为可能。PocketSphinx包含了...
本文档介绍Sphinx4在Windows下的中文训练过程及注意事项,与本文档配套的是我自己的训练实例bergtrain和用到的软件。 本文档编写日期 2013-04-23 1、为什么要训练? sphinx4目前的版本中仅提供了英文等语音识别库。...
2. **基本API使用**:介绍如何使用Pocketsphinx的API进行语音识别,包括初始化、录音、解码和关闭等步骤。 3. **模型训练**:解释如何收集数据、创建自定义模型,并进行训练。 4. **实例演示**:提供实际应用案例...
**一、Sphinx介绍** Sphinx是由Benoit Stein创建的一个开源文档生成器,它支持多种输出格式,如HTML、PDF、Epub等。Sphinx以其简洁的文本格式ReStructuredText(reST)为基础,允许开发者使用易于阅读和写作的语法...
本文将详细介绍pocketsphinx以及其在中文语音识别中的应用。pocketsphinx是一款开源的、轻量级的语音识别引擎,它主要用于离线语音识别任务,特别适合于资源有限的设备上运行。该软件包是CMU Sphinx项目的一部分,由...
6. Sphinx Domains(Sphinx域):这是Sphinx的一个重要特性,介绍域的概念,它允许Sphinx针对特定领域(如Python、C、C++、JavaScript等)生成定制的文档,并提供特定于这些领域的标记。 7. Serialization builder ...
- **文档**:包括用户手册和开发者指南,详细介绍如何使用和开发pocketsphinx。 通过pocketsphinx-0.8,开发者可以构建各种应用场景,如智能家居控制、语音助手、教育软件、无障碍应用等,将语音识别技术融入到日常...
本文将详细介绍如何在Linux下配置和使用PHP与Sphinx进行实际操作。 首先,Sphinx是一个开源的全文搜索引擎,它设计用于提供高速、高精度的全文检索服务。它的核心特性包括实时索引、低内存占用以及支持多种数据源,...
在提供的链接 http://www.cnblogs.com/strick/p/4173757.html 中,博主详细介绍了如何搭建 Sphinx 的环境以及进行基本的配置。这个教程主要分为以下几个部分: 1. **下载与安装**: - `coreseek-4.1-win32` 文件是...