原文地址: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. Hadoop_10_shuffle02_详解Shuffle过程【来源网络】推荐更为详细

    网址:http://www.cnblogs.com/felixzh/p/4680808.html Shuffle过程,也称Copy阶段.reduce task从各个map task上远程拷贝一片数据, ...

  2. SplendidCRM 中文语言包改正版

    由于官方的中文语言包太多地方词不达意,可能是文化差异吧,如“删除”却写成“德尔”.本人修改了几十个地方,还修改了不能清除已有数据的Bug.相关文件在下载包中. http://files.cnblogs ...

  3. HTML的快速写法:Emmet和Haml

    HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法—-简写法. 常用的简写法,目前主要是Emmet和Haml两种 ...

  4. POJ2828 Buy Tickets

    题意:依次给出n个插队的情况——k,name.即标号为name的这个人插到k后,且这个过程有时间顺序. 思路:很容易想到从后往前插,也很容易想到用线段树维护个数,但是某些细节wa了很多次,代码和网上的 ...

  5. 用iftop监控流量

    1.下载iftop http://pan.baidu.com/share/link?shareid=387372457&uk=1829018343 或 wget http://www.ex-p ...

  6. hiho#14

    军训去了没有打,回来看题跑. T1:hehe 注意X可能是实数233 #include<cstdio> #include<cctype> #include<queue&g ...

  7. java不用jni,也可以获得当前系统性能信息

    最近做个项目,就是要取得cpu占有率等等的系统信息,一开始以为要用动态链接库了,但后来发现可以像下面这样做,不去调用jni,这样省去了很多看新技术的时间o(∩_∩)o... 在Java中,可以获得总的 ...

  8. 使用Expression做Linq的參數化排序

    Linq非常的好用,減少大量的資料庫操作手序,使用具名的類別,減少了在程式中寫SQL寫錯字的可能性,問題來了,如果我想用QueryString中的參數,作為排序的依據,但是因為是具名的類別,不能指定字 ...

  9. Java实现FTP上传下载功能

    Java FTP客户端工具包很多,在此我选用的Apache的FTPClient.这个包的获取可以通过http://commons.apache.org/net/来获取,我使用的是最新的commons- ...

  10. JS倒计时代码

    第一种:精确到秒的javascript倒计时代码 HTML代码: <form name="form1"> <div align="center" ...