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>
問題:啟動searchd服務後,再新增的索引都無效,只有重新啟動searchd服務後才能生效。
主索引:mysql
增量索引:new
操作過程:1.建立主索引:
<code>indexer -c csft.conf mysql </code>
<code>serachd </code>
能找到8個結果
5.新增增量索引
indexer -c csft.conf new --rotate
結果還是8條
<code>indexer -c csft.conf mysql new -merge-dst-range deleted 0 0 --rotate </code>
8.透過php進行搜尋
結果仍是8條
<code>indexer -c csft.conf mysql --rotate </code>
結果仍是8條
(奇怪的是,如果不關閉原來的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>