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

在数据库数据非常庞大的时候,而且实时有新的数据插入,如果我们不更新索引,新的数据就search不到,全部重新建立索引又很消耗资源,在这种情况下我们就需要使用“主索引+增量索引”的思路来实现实时更新的功能。

因为这时我们有了主索引和增量索引,主索引只需在每天凌晨更新,而增量索引的更新频率设置的很短,这样用户在搜索的时候,可以同时在这两个索引里查找。

首先创建一个计数器:

1.先在mysql中插入一个计数表

CREATE TABLE sph_counter(

counter_id INTEGER PRIMARY KEY NOT NULL,

max_doc_id INTEGER NOT NULL

);

2.再次修改配置文件,在主数据源里面我们要改预查询语句:

Vi  /usr/local/coreseek/etc/csft.conf

source main{

sql_query_pre = SET NAMES utf8

sql_query_pre = SET SESSION query_cache_type=OFF

sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents

sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents /

WHERE id<=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )

… //其他可以默认

}

source delta : main //继承数据源

{

sql_query_pre = SET NAMES utf8

sql_query_pre = SET SESSION query_cache_type=OFF

sql_query_pre =

sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents /

WHERE id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )

}

index mian //主索引

{

source = main

Path=/usr/local/coreseek/var/data/main

}

index delta : main //增量索引

{

source = delta

Path=/usr/local/coreseek/var/data/delta

}

3.重建增量索引

/usr/local/coreseek/bin/indexer -c  /usr/local/coreseek/etc/csft.conf  delta

用/usr/local/coreseek/bin/search工具来检索,查询主索引中检索结果为0,而新数据库在增量索引中检索到。

4.实时更新索引

建2个shell脚本,一个主索引脚本、一个增量索引脚本

Vi  main.sh

#!/bin/sh

/usr/local/coreseek/bin/indexer main –c  /usr/local/coreseek/etc/csft.conf >> /usr/local/coreseek/var/log/main.log

Vi   delta.sh

#!/bin/sh

/usr/local/coreseek/bin/indexer delta –c  /usr/local/coreseek/etc/csft.conf –rotate>> /usr/local/coreseek/var/log/delta.log

加入到计划任务里面:每5分钟重新增量索引;每天凌晨2点重建主索引

*/5 * * * * /usr/local/coreseek/etc/delta.sh > /dev/null 2>&1

0 2 * * * /usr/local/coreseek/etc/main.sh > /dev/null 2>&1

sphinx续5-主索引增量索引和实时索引的更多相关文章

  1. Coreseek:部门查询和增量索引代替实时索引

    1.行业调查 索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式上INSERT操作).同时, ...

  2. sphinx实时索引和高亮显示

    sphinx实时索引和高亮显示 时间 2014-06-25 14:50:58  linux技术分享 -欧阳博客 原文  http://www.wantlearn.net/825 主题 Sphinx数据 ...

  3. Coreseek:区段查询及增量索引取代实时索引

    1.区段查询 索引系统须要通过主查询来获取所有的文档信息,一种简单的实现是将整个表的数据读入内存,可是这可能导致整个表被锁定并使得其它操作被阻止(比如:在MyISAM格式上的INSERT操作),同一时 ...

  4. Sphinx实时索引

    数据库中的数据很大,然后我有些新的数据后来加入到数据库中,也希望能够检索到,全部重新建立索引很消耗资源,这样需要用到“主索引+增量索引”的思路来解决,这个模式实现的基本原理是设置两个数据源和两个索引. ...

  5. MySQL的几个概念:主键,外键,索引,唯一索引

    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...

  6. Sphinx 实时索引

    index rt { type = rt rt_mem_limit = 512M path = /usr/local/sphinx/data/rt rt_field = title rt_field ...

  7. Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

    Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要 ...

  8. Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别

    原文:Mysql主键索引.唯一索引.普通索引.全文索引.组合索引的区别 Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不 ...

  9. mysql InnoDB index 主键采用聚簇索引,二级索引不采用聚簇索引

    原文链接 我的归纳: (1)InnoDB的主键采用聚簇索引存储,使用的是B+Tree作为索引结构,但是叶子节点存储的是索引值和数据本身(注意和MyISAM的不同). (2)InnoDB的二级索引不使用 ...

随机推荐

  1. python tile

    tile(A,reps) 创建一个数组,通过reps次重复A >>>a=np.arry([0,1,2])#创建了一个数组 >>>np.tile(a,2)#创建了一个 ...

  2. BZOJ4032 : [HEOI2015]最短不公共子串

    第一问: 对B串建立SAM,暴力枚举A的每个子串,在SAM上走,若失配则可行. 第二问: 设g[i][j]表示B串的第i个字符之后最早出现的字符j的位置,暴力枚举A的每个子串,按照g贪心地走,若失配则 ...

  3. Ubuntu根目录下各文件夹的功能详细介绍

    Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/    用以存储二进制可执行命令文件. / ...

  4. Ubuntu(Linux) 下 unzip 命令使用详解

    1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist ...

  5. EnableViewState=“false”不能乱用啊

    有时候页面源文件里有一段看上去像乱码的代码,这时候为了加快页面的加载速度,可以使用EnableViewState=“false”,这时候页面上的乱码就会消失了.但是,关于这个问题作者郁闷了好久,之前为 ...

  6. UIView+LHQExtension(分类)

    // //  UIView+LHQExtension.h //  微博 - 李洪强(2016-5-27) // //  Created by vic fan on 16/5/30. //  Copyr ...

  7. WPF 中Frame + Page 的使用

    1 在window 的设计的时候 ,中间需要进行页面切换的时候,顶一个Frame <Frame Name="MainPage"  NavigationUIVisibility ...

  8. shadowColor表示阴影颜色,shadowBlur表示模糊等级

    绘制之前的准备工作: 1.在body中加入canvas标签,设置它的id.width.height,当然也可以动态设置它的宽高. <canvas id="mycanvas" ...

  9. 上传文件及$_FILES的用法实例

    Session变量($_SESSION):�php的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中.1.Session简介SESSION也称为会话期,其是存储在服务 ...

  10. WBS练习

    我们把这次团队程序设计分成了6个模块,让每一个同学都能参与其中,然后让每一个人选一个自己喜欢的模块,最后数据库设计这个部分就大家一起来做. Everybody's task allocation is ...