Coreseek:区段查询及增量索引代替实时索引
来源:互联网 发布:粘土淘宝 编辑:程序博客网 时间:2024/04/30 07:13
1.区段查询
索引系统需要通过主查询来获取全部的文档信息,一种简单的实现是将整个表的数据读入内存,但是这可能导致整个表被锁定并使得其他操作被阻止(例如:在MyISAM格式上的INSERT操作),同时,将浪费大量内存用于存储查询结果,诸如此类的问题吧。 为了避免出现这种情况,CoreSeek/Sphinx支持一种被称为 区段查询的技术. 首先,CoreSeek/Sphinx从数据库中取出文档ID的最小值和最大值,将由最大值和最小值定义自然数区间分成若干份,一次获取数据,建立索引。现举例如下:
sql_query_range= SELECT MIN(id),MAX(id) FROM documentssql_range_step = 1000sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end只要在配置文件里面写三条语句即可
from后面要跟的是你数据库里面的表名,如这里的表就是document
2.增量索引代替实时索引
有这么一种常见的情况:整个数据集非常大,以至于难于经常性的重建索引,但是每次新增的记录却相当地少。一个典型的例子是:一个论坛有1000000个已经归档的帖子,但每天只有1000个新帖子。
在这种情况下可以用所谓的“主索引+增量索引”(main+delta)模式来实现“近实时”的索引更新。
这种方法的基本思路是设置两个数据源和两个索引,对很少更新或根本不更新的数据建立主索引,而对新增文档建立增量索引。在上述例子中,那1000000个已经归档的帖子放在主索引中,而每天新增的1000个帖子则放在增量索引中。增量索引更新的频率可以非常快,而文档可以在出现几分种内就可以被检索到。
确定具体某一文档的分属那个索引的分类工作可以自动完成。一个可选的方案是,建立一个计数表,记录将文档集分成两部分的那个文档ID,而每次重新构建主索引时,这个表都会被更新。
分辨要在mysql里建表,然后修改配置文件
# in MySQLCREATE TABLE sph_counter( counter_id INTEGER PRIMARY KEY NOT NULL, max_doc_id INTEGER NOT NULL);# in sphinx.confsource 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点半时候做一次主索引
- Coreseek:区段查询及增量索引代替实时索引
- coreseek实时索引更新之增量索引
- coreseek 增量索引模拟实时索引
- coreseek实时索引更新之增量索引
- Coreseek 增量索引
- coreseek增量索引配置 windows
- coreseek创建索引和增量索引
- coreseek配置以及增量索引合并索引
- sphinx coreseek索引和增量索引
- coreseek增量索引的实现及定时执行脚本
- coreseek实时索引全文搜索
- coreseek全文检索如何配置增量索引
- mongo-connector实时增量索引
- coreseek生成索引、合并建主索引和增量索引、重建整个索引
- coreseek生成索引、合并建主索引和增量索引、重建整个索引详解
- coreseek生成索引、合并建主索引和增量索引、重建整个索引详解
- Sphinx实时索引,用增量索引实现索引更新
- sphinx续5-主索引增量索引和实时索引
- lua_State和luaL_newstate,luaL_openlibs及lua_close
- UIKit 力学教程
- hasMoreElements的用法
- 微信操作整理
- HNOI 2014 Day1 米特运输
- Coreseek:区段查询及增量索引代替实时索引
- 利用扩展事件和警报实时监控死锁-命令方式
- Arrays.copyOf()与System.arraycopy()的源码分析
- Java Observable 模式
- const char*, char const*, char*const的区别
- thunar 启动特别慢
- WiFi共享精灵出错之错误代码简介篇
- myeclipse 安装 ibatis 插件 自动生成java代码
- [leetcode]Remove Duplicates from Sorted Array