Maison >développement back-end >tutoriel php >coreseek添加增量索引后无法生效,是怎么回事?
windows7 64位环境下,用的是3.2.14 win32的版本。
问题:启动searchd服务后,再添加的索引都无效,只有重启searchd服务后才能生效。
主索引:mysql
增量索引:new
操作过程:
1.建立主索引:
<code>indexer -c csft.conf mysql </code>
2.启动服务:
<code>serachd </code>
3.通过php进行搜索:
能找到8条结果
4.数据库中新添加相关关键词的数据
5.添加增量索引
indexer -c csft.conf new --rotate
6.通过php进行搜索
结果还是8条
7.或者试一下合并索引:
<code>indexer -c csft.conf mysql new -merge-dst-range deleted 0 0 --rotate </code>
8.通过php进行搜索
结果仍然是8条
9.重新建立主索引:
<code>indexer -c csft.conf mysql --rotate </code>
10.通过php进行搜索
结果仍然是8条
11.关闭原有的searchd服务,再启动searchd服务,则查询的结果就有了刚才插入的数据
(奇怪的是,如果不关闭原来的searchd服务,直接在建索引的那个窗口中启动searchd服务,搜索的结果会变,但只有两三条,不知这又是什么原因?)
配置文件:
<code>#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/... }</code>
windows7 64位环境下,用的是3.2.14 win32的版本。
问题:启动searchd服务后,再添加的索引都无效,只有重启searchd服务后才能生效。
主索引:mysql
增量索引:new
操作过程:
1.建立主索引:
<code>indexer -c csft.conf mysql </code>
2.启动服务:
<code>serachd </code>
3.通过php进行搜索:
能找到8条结果
4.数据库中新添加相关关键词的数据
5.添加增量索引
indexer -c csft.conf new --rotate
6.通过php进行搜索
结果还是8条
7.或者试一下合并索引:
<code>indexer -c csft.conf mysql new -merge-dst-range deleted 0 0 --rotate </code>
8.通过php进行搜索
结果仍然是8条
9.重新建立主索引:
<code>indexer -c csft.conf mysql --rotate </code>
10.通过php进行搜索
结果仍然是8条
11.关闭原有的searchd服务,再启动searchd服务,则查询的结果就有了刚才插入的数据
(奇怪的是,如果不关闭原来的searchd服务,直接在建索引的那个窗口中启动searchd服务,搜索的结果会变,但只有两三条,不知这又是什么原因?)
配置文件:
<code>#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/... }</code>