coreseek分步查询大量数据
作者:互联网
背景
公司有个小的中文搜索服务,使用的是coreseek,时间比较久远。近期发现数据量较多,80万条,每次查询都是一次慢SQL,DBA已经告知必须要修改这个慢SQL。
coreseek安装
我是在windows上安装的,解压即用,非常方便,省去无数烦恼 -> 地址
索引配置
index searchkeyword
{
source = searchkeyword #对应的source名称
path = D:/tools/coreseek-4.1-win32/search_data/searchkeyword #请修改为实际使用的绝对路径,例如:/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/mmseg/etc/ #BSD、Linux环境下设置,/符号结尾
charset_dictpath = D:/tools/coreseek-4.1-win32/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
min_infix_len = 1
}
全局配置
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 5000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file =D:/tools/coreseek-4.1-win32/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log =D:/tools/coreseek-4.1-win32/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
#workers=fork
query_log =D:/tools/coreseek-4.1-win32/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}
增量索引
尝试了下,比较复杂,可能还要经过多次测试才可以认定是不是正确的,放弃
分页查询
source searchkeyword
{
type = mysql
sql_host = test # 数据库服务器地址
sql_user = admin
sql_pass = 123
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
## 当数据源数据太大的时候,一个sql语句查询下来往往很有可能锁表等操作。
## 那么我么就可以使用多次查询,那么这个多次查询就需要有个范围和步长,sql_query_range和sql_range_step就是做这个使用的。
## 获取最大和最小的id,然后根据步长来获取数据。比如下面的例子,如果有4500条数据,这个表建立索引的时候就会进行5次sql查询。
## 而5次sql查询每次的间隔时间是使用sql_ranged_rhrottle来进行设置的。单位是毫秒。
sql_query_range = SELECT MIN(id),MAX(id) FROM user;
sql_range_step = 1000
sql_ranged_throttle = 0
sql_query = SELECT id,id as sid,word,key_id FROM user where id>$start and id<=$end;
#sql_attr_uint = sid
sql_field_string = word
sql_field_string = key_id
sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
sql_query_info = SELECT * FROM user WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}
标签:coreseek,log,查询,分步,sql,var,query,id 来源: https://www.cnblogs.com/willsdu/p/14465278.html