Windows 7 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 서비스를 시작하면 검색 결과가 바뀌는데 2~3개밖에 안 나오네요 )
구성 파일:
<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>
Windows 7 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 서비스를 시작하면 검색 결과가 바뀌는데 2~3개밖에 안 나오네요 )
구성 파일:
<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>