coreseek添加增量索引后无法生效,是怎么回事?
windows7 64位环境下,用的是3.2.14 win32的版本。
问题:启动searchd服务后,再添加的索引都无效,只有重启searchd服务后才能生效。
主索引:mysql
增量索引:new
操作过程:
1.建立主索引:
indexer -c csft.conf mysql
2.启动服务:
serachd
3.通过php进行搜索:
能找到8条结果
4.数据库中新添加相关关键词的数据
5.添加增量索引
indexer -c csft.conf new --rotate
6.通过php进行搜索
结果还是8条
7.或者试一下合并索引:
indexer -c csft.conf mysql new -merge-dst-range deleted 0 0 --rotate
8.通过php进行搜索
结果仍然是8条
9.重新建立主索引:
indexer -c csft.conf mysql --rotate
10.通过php进行搜索
结果仍然是8条
11.关闭原有的searchd服务,再启动searchd服务,则查询的结果就有了刚才插入的数据
(奇怪的是,如果不关闭原来的searchd服务,直接在建索引的那个窗口中启动searchd服务,搜索的结果会变,但只有两三条,不知这又是什么原因?)
配置文件:
#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库
#源定义
source mysql
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = root
sql_db = mall
sql_port = 3306
sql_query_pre = SET NAMES utf8
#插入文章表的最大id
sql_query_pre = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle
sql_query = SELECT id, title,content FROM acticle
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
#sql_attr_uint = group_id #从SQL读取到的值必须为整数
#sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性
sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
sql_query_info = SELECT * FROM acticle WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}
#增量数据源
source new:mysql
{
sql_query_pre = SET NAMES utf8
sql_query=select id,title,content from acticle where id>(select newid from acticle_new where id=1);
sql_query_post = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle
sql_query_post_index = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle
}
#index 主索引定义
index mysql
{
source = mysql #对应的source名称
path = E:/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 = E:/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
}
#增量索引
index new:mysql
{
type=rt
source = new #对应的source名称
path = E:/coreseek/var/data/new #请修改为实际使用的绝对路径,例如:/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 = E:/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/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 = E:/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = E:/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = E:/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
虽然我来的晚一些 但是我的提示希望对你有些帮助,因为不久前我刚刚处理完这样的问题
在我mac电脑本地搭了个环境,也是出现了相同的问题,--rotate的用法 会导致search 进程假死问题。
我硬着脑皮 到测试环境下(centos 7) 居然没有这样的问题。
我建议你换换环境搭建 看看是否问题解决,coreseek 官网好像是没有人在维护了。所以任命吧
preopen_indexes = 0
searchd配置以上即可正常,我也是被这个问题烦了一天