原文地址: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. logback 配置详解【讲解较全的博客网站】

    http://blog.csdn.net/haidage/article/category/812478 详解(一)http://blog.csdn.net/haidage/article/detai ...

  2. C# 使用 Direct2D 实现斜角效果

    Direct2D 是微软新的二维图形 API,可为二维几何图形.位图和文本提供高性能和高质量的呈现.Direct2D 支持硬件加速,无论是绘制速度还是绘制质量,Direct2D 都要比 GDI 和 G ...

  3. ZOJ3362 Beer Problem(最小费用任意流)

    题目大概说有n个城市,由m条无向边相连,每条边每天最多运送cap桶酒且其运送一桶的花费是cost.现在从1号城市开始出发运酒,供应到2到n号城市,这些城市的收购单价是price,问最大的盈利是多少. ...

  4. 【BZOJ】1084: [SCOI2005]最大子矩阵(DP)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1084 有一个1A--- 本题没看懂,,不会啊囧..感觉完全设不了状态..看了题解,囧,m<=2 ...

  5. 【Linux】linux常用基本命令(转)

    (转自:http://blog.csdn.net/xiaoguaihai/article/details/8705992) Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用 ...

  6. org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hive/warehouse/page_view. Name node is in safe mode

    FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteExceptio ...

  7. asp.net 微信企业号办公系统-流程设计--流程步骤设置-按钮设置

    按钮设置是配置当前步骤的处理者可以执行哪些操作,每个按钮都有对应的执行脚本(javascript脚本). 从左边的按钮列表中选择当前步骤需要的按钮. 注意:如果是流程最后一步则要配置完成按钮而不是发送 ...

  8. 第十六章 PHP 操作MySQL

    学习要点:1.PHP 连接到MySQL2.增删改查3.其他常用函数 如果你已经具有了使用PHP.SQL 和MySQL 的丰富经验,现在就可以把所有这些技术组合在一起.PHP 与MySQL 之间稳固的集 ...

  9. 网站地图sitemap.xml的格式

    URL列表—XML格式及规范说明: 标签名称  属性  标签说明  标签类型  标签限制  可选/必选  urlset  / urlset用来标记整个文档的开头  /  /  必选  url  / u ...

  10. 紧挨导航栏下的链接a标签失效

    在我编完网页测试的的时候,发现导航下的链接不能用,不出现小手的图表,而下面的相同的链接都能用.如下图所示 遇到的相同问题的另一个未完成的页面如图 先不谈论其原因,说一下我对第一个页面的解决办法,我在导 ...