原文地址:http://blog.itpub.net/29806344/viewspace-1399621/

在分析sphix原理之前,我先澄清一下为什么经常出现coreseek这个词?

因为sphinx默认不支持中文索引及检索,而coreseek基于sphinx开发了coreseek全文检索服务器,它提供了为sphinx设计的中文分词包libmmseg包含mmseg中文分词,是目前用的最多的sphinx中文检索。
    在没有sphinx之前,mysql数据库要对海量的文章中的词进行全文索引,一般用的语句例如:SELECT   ***  WHERE  ***  LIKE   '%word%';这样的LIKE查询,并且再结合通配符%,是使用不到mysql本身的索引,需要全表扫描,时间超慢的!

如果用到sphinx,全文索引交给sphinx来做,sphinx返回含有该word的ID号,然后用该ID号直接去数据库准确定位那些数据,整个过程如下图:

sphinx的索引文件存储的不是完整的数据,只是由ID和分词组成的数组,由于索引文件不同直接查看,但我们可以通过search工具来验证:

先建索引:

/usr/local/coreseek/bin/indexer -c
/usr/local/coreseek/etc/sphinx.conf

Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev
(r2922)]

Copyright (c) 2007-2011,

Beijing Choice Software Technologies Inc
(http://www.coreseek.com)

再通过search 查找单词test:

/usr/local/coreseek/bin/search test -c
/usr/local/coreseek/etc/sphinx.conf

Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev
(r2922)]

Copyright (c) 2007-2011,

Beijing Choice Software Technologies Inc
(http://www.coreseek.com)

using config file '/usr/local/coreseek/etc/sphinx.conf'...

index 'test1': query 'test ': returned 3
matches of 3 total in 0.050 sec

displaying matches:

1. document=1, weight=2421, group_id=1,
date_added=Thu Jan  8 21:43:32 2015

id=1

group_id=1

group_id2=5

date_added=2015-01-08
21:43:32

title=test
one

content=this
is my test document number one. also checking search within phrases.

2. document=2, weight=2421, group_id=1,
date_added=Thu Jan  8 21:43:32 2015

id=2

group_id=1

group_id2=6

date_added=2015-01-08
21:43:32

title=test
two

content=this
is my test document number two

3. document=4, weight=1442, group_id=2,
date_added=Thu Jan  8 21:43:32 2015

id=4

group_id=2

group_id2=8

date_added=2015-01-08
21:43:32

title=doc
number four

content=this
is to test groups

words:

1. 'test': 3 documents, 5 hits

再通过search 查找单词this:

/usr/local/coreseek/bin/search this -c
/usr/local/coreseek/etc/sphinx.conf

Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev
(r2922)]

Copyright (c) 2007-2011,

Beijing Choice Software Technologies Inc
(http://www.coreseek.com)

using config file
'/usr/local/coreseek/etc/sphinx.conf'...

index 'test1': query 'this ': returned 4
matches of 4 total in 0.000 sec

displaying matches:

1. document=1, weight=1304, group_id=1,
date_added=Thu Jan  8 21:43:32 2015

id=1

group_id=1

group_id2=5

date_added=2015-01-08
21:43:32

title=test
one

content=this
is my test document number one. also checking search within phrases.

2. document=2, weight=1304, group_id=1,
date_added=Thu Jan  8 21:43:32 2015

id=2

group_id=1

group_id2=6

date_added=2015-01-08
21:43:32

title=test
two

content=this
is my test document number two

3. document=3, weight=1304, group_id=2,
date_added=Thu Jan  8 21:43:32 2015

id=3

group_id=2

group_id2=7

date_added=2015-01-08
21:43:32

title=another
doc

content=this
is another group

4. document=4, weight=1304, group_id=2,
date_added=Thu Jan  8 21:43:32 2015

id=4

group_id=2

group_id2=8

date_added=2015-01-08
21:43:32

title=doc
number four

content=this
is to test groups

words:

1. 'this': 4 documents, 4 hits

由此,我们可以看到,search 关键词
主要返回的是含有表ID和命中率的数组。

注意:不知道大家有没有想到一个致命的问题,创建了sphinx全文索引后,如果在mysql中新增加数据,不重新indexer一下,sphinx索引是搜索不到的!即使是加参数–rotate,数据多的情况下,也要很长时间,这个问题怎么解决呢!明天就来讲主索引和增量索引,以及用cron来处理新数据自动加入增量索引中。

补充:

sphinx续4-coreseek的工作原理的更多相关文章

  1. springMVC 的工作原理和机制

    工作原理上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web. ...

  2. springMVC 的工作原理和机制(转)

    工作原理上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web. ...

  3. DHCP 工作原理

    DHCP 详解 DHCP 工作原理 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server), ...

  4. VMware vSphere中的HA工作原理介绍

    http://blog.51cto.com/linkinsds/416738 HA全称High Availability.它是VMware的企业应用环境中用来保障企业级应用的不间断运行需求所产生的一个 ...

  5. Buck工作原理分析,连续模式,断续模式

    Part01:Buck电路工作原理: 图1-1 Buck电路拓扑结构 Buck电路的拓扑结构如图1-1所示: (1) input接输入电源,既直流电动势: (2) IGBT1为开关管,可以选择以全控型 ...

  6. 170529、springMVC 的工作原理和机制

    工作原理上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web. ...

  7. SQL索引工作原理

    SQL 当一个新表被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机保存,当一个8K用完的时候, SQLS指针会自动分配一个8K的空间.这里,每 ...

  8. Spring MVC的工作原理和机制

    Spring  MVC的工作原理和机制 参考: springMVC 的工作原理和机制 - 孤鸿子 - 博客园https://www.cnblogs.com/zbf1214/p/5265117.html ...

  9. 浅谈C++编译原理 ------ C++编译器与链接器工作原理

    原文:https://blog.csdn.net/zyh821351004/article/details/46425823 第一篇:      首先是预编译,这一步可以粗略的认为只做了一件事情,那就 ...

随机推荐

  1. http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html

    http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html

  2. POJ1659 Frogs' Neighborhood(Havel定理)

    给一个无向图的度序列判定是否可图化,并求方案: 可图化的判定:d1+d2+……dn=0(mod 2).关于具体图的构造,我们可以简单地把奇数度的点配对,剩下的全部搞成自环. 可简单图化的判定(Have ...

  3. BZOJ3444: 最后的晚餐

    Description [问题背景] 高三的学长们就要离开学校,各奔东西了.某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结.因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起. [问题描述] ...

  4. Linux_自动调整linux系统时间和时区与Internet时间同步

    调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# v ...

  5. Java递归搜索指定文件夹下的匹配文件

    import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Queue; /** ...

  6. CentOS网卡配置文件

    [root@xaiofan ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0TYPE=EthernetONBOOT=yesNM ...

  7. Java泛型总结

    1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的 ...

  8. 【液晶模块系列基础视频】4.4.X-GUI图形界面库-画tab函数简介

    [液晶模块系列基础视频]4.4.X-GUI图形界面库-画tab函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地址 ...

  9. GIT: 远程建立一个仓库,然后复制到本地

    1. 登录  GIT,创建一个新的仓库 gitskills 2. 创建的时候,要选择 Initialize this repository with a readme ,让GitHub初始化仓库 3. ...

  10. 【转】jsonp详解

    原文地址:http://www.cnblogs.com/yuzhongwusan/archive/2012/12/11/2812849.html json相信大家都用的多,jsonp我就一直没有机会用 ...