coreseek增量索引
1、在多数情况下,因为Coreseek索引速度高达10MB/s,所以只需要创建一个索引源即可满足需求,但是在数据量随时激增的大型应用中(如SNS、评论系统等),单一的索引源将会给indexer造成极大的性能负荷
2、增量索引能够在一定程度上提升Coreseek索引性能,降低CPU使用率。增量索引的原理非常简单,即使用“主索引+增量索引”的方式创建索引。其中主索引存放放50%以上的数据量,增量索引表通常只需要存放较近插入的数据即可(增量索引表允许有多个索引表组成)。增量索引是通过主从素银继承实现的,继承的格式为“增量索引:父索引”,如以下代码所示:
#主索引 source main { } #生成索引 index main { } # 增量索引 source delta:main { } #delta index delta:main { } #全局index定义 indexer { mem_limit = 128M } #searchd服务定义 searchd { }
通过继承,增量索引配置就拥有了主索引全部配置信息。淡然也可以重新设置增量索引的配置信息,这些配置信息将覆盖主索引配置项。如以下代码所示:
#源定义 source mysql { type = mysql sql_host = localhost sql_user = test sql_pass = root sql_db = kp_account sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query = SELECT goods_id, goods_id as gid, goods_name, add_time FROM fc_goods where goods_id < 10 #isql_query第一列id需为整数 #title、content作为字符串/文本字段,被全文索引 sql_attr_uint = gid #从SQL读取到的值必须为整数 sql_attr_timestamp = add_time #从SQL读取到的值必须为整数,作为时间属性 sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集 sql_query_info = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息 } #index定义 index mysql { source = mysql #对应的source名称 path = /Data/apps/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 html_strip = 0 #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/ #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 charset_dictpath = /Data/apps/mmseg3/etc/ #charset_dictpath = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... charset_type = zh_cn.utf-8 } # 增量索引 source mysql1:mysql { sql_query_pre = SET NAMES utf8 sql_query = SELECT goods_id, goods_id as gid, goods_name, add_time FROM fc_goods where goods_id >= 10 } #mysql1定义 index mysql1:mysql { source = mysql1 path = /Data/apps/coreseek/var/data/mysql1 charset_dictpath = /Data/apps/mmseg3/etc/ charset_type = zh_cn.utf-8 } #全局index定义 indexer { mem_limit = 128M } #searchd服务定义 searchd { listen = 9312 read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 0 preopen_indexes = 0 unlink_old = 1 pid_file = /Data/apps/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... log = /Data/apps/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... query_log = /Data/apps/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... }
上述配置文件定义了一个mysql主索引和一个mysql1增量索引,为了方便演示,这里讲主索引数据范围限制为id<10的数据;而在mysql1增量索引中限制id>=10的数据,这样就实现了主从索引(即增量索引)。在合并主从索引前,首先需要生成增量索引,命令如下:
[root@localhost ~]# /Data/apps/coreseek/bin/indexer -c /Data/apps/coreseek/etc/csft_mysql.conf mysql1 --rotate // 生成增量索引
增量索引生成之后
[root@localhost ~]# /Data/apps/coreseek/bin/indexer -c /Data/apps/coreseek/etc/csft_mysql.conf --merge mysql mysql1 --rotate // 合并主从索引
这样就完成了增量索引的配置。
,只需要使用merge选项讲增量索引表合并到主索引表即可。