1.Sphinx简介

  是一款基于SQL的高性能全文检索引擎(还不支持NoSQL), 主要优点有:

    1).创建和重建索引迅速

    2).大数据量时检索速度较快

    3).为很多脚本语言设计了检索API(如PHP, Python, Perl, Ruby), 很方便地调用Sphinx的相关接口对数据库进行查询

    4).为MySQL, PostgreSQL等设计了存储引擎插件, 可以很方便的使用

    5).支持分布式搜索, 可以横向扩展系统性能

  缺点:

    必须要有主键, 且主键为整型

    不负责数据存储

    配置不灵活

  Coreseek, 支持中文的全文检索引擎(即支持中文分词的Sphinx = Sphinx + mmseg)

2.搜索方式的改变

  旧有搜索方式

    PHP -> MySQL

  Sphinx搜索方式

    PHP -> Sphinx <-> MySQL

    搜索词, 得到文档ID, 拿ID去MySQL中查询对应ID文档的信息

3.什么是全文检索

  数据分类

    结构化数据: 指具有固定格式或有限长度的数据, 如数据库, 元数据等

    非结构化数据: 指没有固定格式或不定长的数据, 也叫全文数据

  搜索分类

    对结构化数据的搜索: 如对数据的数值、 时间等进行搜索, 对Windows的文件名、类型的搜索等

    对非结构化数据的搜索: Linux下的grep命令等, 对非结构化的数据的搜索也叫对全文数据的搜索

  全文数据的搜索分类

    顺序扫描: 从头到尾的找, 如Like查找

    索引扫描: 把非结构化数据中的内容提取出来一部分重新组织, 让它变的有结构化, 这部分提取出来的数据就叫做索引

  全文索引:是指计算机索引程序通过扫描文档中的每个词, 对每个词建立索引, 记录在文档中的位置及次数, 当用户查询时,直接搜索索引, 并返回结果的检索方式

4.Sphinx的步骤

  1.索引创建

    Sphinx即对记录进行分词, 并记录下词所在记录ID, 创建索引表

  2.搜索索引

    当请求来时, 会对请求的词进行分词, 查找索引表, 返回对应的记录ID

  1.MySQL中创建文档(记录)

  2.把文档传给分词组件(Tokenizer), 分词组件把文档分成一个个单独的单词(), 去除标点符号, 去除停词(stop word)(the, a, this等), 每种分词组件都会有一个停词集合, 分词组件处理完毕后我们便得到词元(Token)

  3.把词元传给语言处理组件(Linguistic Processor), 将大写变为小写, 复数缩减为单数形式, 过去时等变为普通词根, 得到词(Term), 所以搜索 drove, 也会搜索到 drive

  4.将词传给索引组件(Indexer), 利用得到的词创建一个字典, 对字典按字母顺序进行排序, 去除重复值

    1).创建字典, 并排序, ID表示记录的ID

      Term    ID

      allow   1

      student 1

      student 1

      student 2

      

    2).去除重复值

      Term    Document Frequency

      allow      1 ->(指向一个链表, (Document ID 1, Frequency 1))

      student    2 ->(指向一个链表, (Document ID 1, Frequency 2) -> (DocumentID 2, Frequency 1))

总结

Sphinx-简介及原理的更多相关文章

  1. sphinx 简介以及安装 以及php拓展开启

    一 sphinx 简介   在 使用mysql数据库过程中,如果想实现全文检索的优化,可以使用mysql自带全文索引,但是不支持中文..关于sphinx的安装网上很多教程写的都 不错比如:http:/ ...

  2. 深入研究Sphinx的底层原理和高级使用

    深入研究Sphinx的底层原理和高级使用

  3. Linux系统学习 十二、VSFTP服务—简介与原理

    1.简介与原理 互联网诞生之初就存在三大服务:WWW.FTP.邮件 FTP主要针对企业级,可以设置权限,对不同等级的资料针对不同权限人员显示. 但是像网盘这样的基本没有权限划分. 简介: FTP(Fi ...

  4. Mybatis简介与原理

    经常面试别人或者被面试,对Mybatis简介与原理这个问题的回答千差万别,为了更好的服务与以后,来个原理介绍. 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 20 ...

  5. tomcat简介及原理解说

    Tomcat简介 作者:杨晓(http://blog.sina.com.cn/u/1237288325) 目录: ----Tomcat背景 ----Tomcat目录 ----Tomcat类加载 --- ...

  6. RPC简介及原理

    简介 RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用). 越底层, ...

  7. StarlingMVC简介,原理解说及示例源码

    StarlingMVC简介 StarlingMVC是一个为使用Starling来开发游戏的MVC框架.这个框架的特性方面,很像Swiz和RobotLegs,原理亦像Mate.其特性列表如下: 依赖注入 ...

  8. HBA简介及原理

    HBA,即主机总线适配器英文“Host Bus Adapter”缩写.是一个使计算机在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板和/或集成电路适配器. 简介 主机总线适配器(Ho ...

  9. Struts简介、原理及简单实现

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...

  10. HBase简介及原理

    HBase简介 1.HBase是一个万亿行,百万列大表(Big Table),数据存放在hdfs集群中: 写操作使用MapReduce处理,将(增删改)处理结果放入HBase中,读就直接读HBase: ...

随机推荐

  1. [BZOJ3622]已经没有什么好害怕的了(容斥DP)

    给定两个数组a[n]与b[n](数全不相等),两两配对,求“a比b大”的数对比“b比a大”的数对个数多k的配对方案数. 据说做了这题就没什么题好害怕的了,但感觉实际上这是一个套路题,只是很难想到. 首 ...

  2. AGC 018 A - Getting Difference

    题面在这里! 天呐,我已经做了一天水题了mmp 养生最重要,恩. 首先发现最终序列里的元素肯定是 <= max 的,因为无论何时序列里都不会有负数,所以减的话不会变大(反向大只有>2*ma ...

  3. 【动态规划】【滚动数组】【搜索】Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) D. Field expansion

    显然将扩张按从大到小排序之后,只有不超过前34个有效. d[i][j]表示使用前i个扩张,当length为j时,所能得到的最大的width是多少. 然后用二重循环更新即可, d[i][j*A[i]]= ...

  4. Problem D: 零起点学算法95——弓型矩阵

    #include<stdio.h> #include<string.h> int main() { ][]; while(scanf("%d%d",& ...

  5. MySQL v5.7.18 版本解压安装

    下载MySQL https://dev.mysql.com/downloads/mysql/5.1.html#downloads 个人机子是64位的,所以选择下载:Windows (x86, 64-b ...

  6. vm克隆linux系统 后连接网络

    第一步 vi /etc/udev/rules.d/70-persistent-net.rules     将之前的eth0注释掉,    将eth1改为eth0 并复制mac地址 第二部 vi /et ...

  7. Don't know how to define struct flock on this system, set --enable-opcach=no

    解决方法一: 最后查看php官方文档解决. 在configure 里面加上   --with-libdir=lib64 解决方法二: 编辑/etc/ld.so.conf 根据系统,加入include ...

  8. mysql交叉表查询解决方案整理

    交叉表是一种常用的分类汇总查询.使用交叉表查询,可以显示表中某个字段的汇总值,并将它们分组,其中一组列在数据表的左侧,另一组列在数据表的上部.行和列的交叉处可以对数据进行多种汇总计算,如:求和.平均值 ...

  9. Elasticsearch 5.5.1的安装和入门教程(转)

    说明:转自老阮的文章,业界最简单的入门教程.一切的安装的运行建议不要用root权限,最好是当前用户下的权限. 作者: 阮一峰 日期: 2017年8月17日 全文搜索属于最常见的需求,开源的 Elast ...

  10. centos下防火墙iptables日志学习笔记

    一直找不到日志方面怎么弄,问了同事,同事给了个网址: http://www.thegeekstuff.com/2012/08/iptables-log-packets/ 下面就是我根据这个网址里面的设 ...