原文地址: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. NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D)

    NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D) 使用NGUI创建的Camera参数为Simple 2D的UI,会在游戏的场景中生成1个名为UI Root( ...

  2. stack UVA 442 Matrix Chain Multiplication

    题目传送门 题意:给出每个矩阵的行列,计算矩阵的表达式,如果错误输出error,否则输出答案 分析:表达式求值,stack 容器的应用:矩阵的表达式求值A 矩阵是a * b,B 矩阵是b * c,则A ...

  3. HDU3341 Lost's revenge(AC自动机+DP)

    题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...

  4. 如何修改 SplendidCRM 页脚版权信息

    打开 SplendidCRM 网站中的Web Site\_controls\Copyright.ascx 文件找到这段代码<div id="divFooterCopyright&quo ...

  5. C#关闭word进程

    C#关闭word进程 foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName(&q ...

  6. eWebeditor编辑器上传图片的设置程序

    protected void Button1_Click(object sender, EventArgs e) { if (this.uploadfile.PostedFile.FileName.E ...

  7. NSString、NSMutableString基本用法

    NSString其实是一个对象类型.NSString是NSObject(Cocoa Foundation的基础对象)的子类 一.NSString的创建 1.创建常量字符串.NSString *astr ...

  8. cmd下常用的一些命令

    1.calc计算器 2.Mspaint画图 3.Netstat -anb查看端口 输入netstat -anb时可能会遇到下面问题 只要到搜索框输入cmd,然后到其快捷方式上右击以管理员身份运行即可 ...

  9. 应用服务器上部署自己的 blog 和 wiki 组件。

    协作性应用程序 这就是 Web 2.0 的全部,尽管该术语出现才几乎一年的时间,但现在好像只有烹饪杂志还没有加入到讨论 Web 2.0 未来出路的行列中.自从出现了里程碑式的文章 "What ...

  10. Asp.Net:GridView 编辑、删除、自定义分页以后备用

    页面 GridView 绑定:在中,有 <asp:BoundField/>和 <asp:TemplateField><ItemTemplate>嵌套服务器控件 &l ...