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

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

1.行业调查

索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式上INSERT操作)。同时,会浪费大量的内存来存储查询结果。喜欢它的问题。 为了避免出现这样的情况。CoreSeek/Sphinx支持一种被称为 区段查询的技术. 首先,CoreSeek/Sphinx从数据库中取出文档ID的最小值和最大值。将由最大值和最小值定义自然数区间分成若干份,一次获取数据。建立索引。现举比例如以下:

sql_query_range	= SELECT MIN(id),MAX(id) FROM documents
sql_range_step = 1000
sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end

仅仅要在配置文件中面写三条语句就可以

from后面要跟的是你数据库里面的表名,如这里的表就是document

2.增量索引取代实时索引

有这么一种常见的情况:整个数据集很大,以至于难于常常性的重建索引,可是每次新增的记录却相当地少。一个典型的样例是:一个论坛有1000000个已经归档的帖子,但每天仅仅有1000个新帖子。

在这样的情况下能够用所谓的“主索引+增量索引”(main+delta)模式来实现“近实时”的索引更新。

这样的方法的基本思路是设置两个数据源和两个索引,对非常少更新或根本不更新的数据建立主索引。而对新增文档建立增量索引。在上述样例中,那1000000个已经归档的帖子放在主索引中,而每天新增的1000个帖子则放在增量索引中。增量索引更新的频率能够非常快,而文档能够在出现几分种内就能够被检索到。

确定详细某一文档的分属那个索引的分类工作能够自己主动完毕。

一个可选的方案是,建立一个计数表,记录将文档集分成两部分的那个文档ID,而每次又一次构建主索引时,这个表都会被更新。

分辨要在mysql里建表,然后改动配置文件

# in MySQL
CREATE TABLE sph_counter
(
    counter_id INTEGER PRIMARY KEY NOT NULL,
    max_doc_id INTEGER NOT NULL
);

# in sphinx.conf
source main
{
    # ...
    sql_query_pre = SET NAMES utf8
    sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents
    sql_query = SELECT id, title, body FROM documents \
        WHERE id<span style="color:#ff0000;"><=</span>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
}

source delta : main
{
    sql_query_pre = SET NAMES utf8
    sql_query = SELECT id, title, body FROM documents \
        WHERE id<span style="color:#ff0000;">></span>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
}

index main
{
    source = main
    path = /path/to/main
    # ... all the other settings
}

# note how all other settings are copied from main,
# but source and path are overridden (they MUST be)
index delta : main
{
    source = delta
    path = /path/to/delta
}

写好之后,还要写两个批处理文件,一个做增量索引。一个合并索引。

增量索引:g:/service/coreseek/bin/indexer  -c g:/service/coreseek/etc/csft_mysql.conf   –rotate main_delta

合并索引:g:/service/coreseek/bin/indexer  -c g:/service/coreseek/etc/csft_mysql.conf  –merge main main_delta –rotate 

写完后。既然后把该任务计划,几乎是同一5几分钟做一个增量索引,每天1有一半的时间做一个主索引

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117763.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Generic Host Process for Win32 Services 错误

    Generic Host Process for Win32 Services 错误机器运行时防火墙一直提示“GenericHostProcessforWin32Services”访问网络,选阻止后系统就一直弹出一个GenericHostProcessforWin32Services遇到问题需要关闭的对话框!在资源管理器中把系统文件的隐藏属性打开后,发现每个盘的根目录下和C:/WINDOWS目录下都有一个gg.exe文件,每个盘的根目录下有一个autoru

    2022年10月12日
  • 查看linux系统版本和内核版本_目前linux最新内核版本

    查看linux系统版本和内核版本_目前linux最新内核版本1.查看内核版本$uname-srLinux4.15.11-1.el7.elrepo.x86_64$uname-aLinuxlocalhost.localdomain4.15.11-1.el7.elrepo.x86_64#1SMPMonMar1911:46:06EDT2018x86_64x86_64x86_64GNU/Linux$cat/pro…

    2022年8月23日
  • js下判断 iframe 是否加载完成的完美方法

    js下判断 iframe 是否加载完成的完美方法

    2021年10月19日
  • idea部署tomcat启动浏览器显示404(如何部署tomcat)

    之前按照网站教程https://www.cnblogs.com/cangqinglang/p/10027199.html配置IDEA之后,tomcat启动成功,但是访问页面报404错误,参考了网站各种教程也没有解决,最后同事发现是outputdirectory路径配置错误了,一定要让项目的输出路径为tomcat的webapps路径,而不能是项目路径,坑了我半天时间,找这个问题,在此贴出来…

    2022年4月11日
  • 信捷plc梯形图实例详解_信捷plc单键启停梯形图

    信捷plc梯形图实例详解_信捷plc单键启停梯形图一直以来都是作为新手在学习PLC,对于PLC编程,每个人都应该觉得自己是新手,只有心态放低,才能把事情看得更清楚,才能将编程的原理了解深透。就拿PLC一键启停编程梯形图来说,PLC种类很多,每个种类对应的编程或多或少有些差异,那么掌握一种一键启停梯形图编程是不是可以应用到其他种类的PLC呢?分享台达PLC的常见一键启停编程梯形图根据最近网友向我我请教的一个PLC单键启停如何编写程序,PLC外部接线…

    2022年9月11日
  • java工厂模式_java工厂模式

    java工厂模式_java工厂模式java工厂模式分三种:简单工厂模式、工厂方法模式、抽象工厂模式。简单工厂模式(SimpleFactoryPattern)属于类的创新型模式,又叫静态工厂方法模式(StaticFactoryMethodPattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式就是通过一个”全能类”,根据外界传递的信息来决定创建哪个具体类的对象。如下图(懒得…

    2022年7月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号