Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景,用户可以免费下载使用;同时针对有实际需要的客户,我们还提供专业的搜索技术与本地化的Sphinx技术支持服务(客户中,记录量最大已超过30亿条,文本容量最大已超过5TB)。我们也提供了QQ群、MSN群,广大用户可以在线及时沟通交流。
http://www.coreseek.cn/
二、windows下安装Coreseek
1、下载 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-win32.zip coreseek-4.x版本,需先安装:Microsoft Visual C++ 2008 运行环境 (x86,1.7M)
2、 建立D:\usr\local\coreseek目录,解压缩coreseek-4.1-win32.zip
3、将上图解压缩的文件复制到 D:\usr\local\coreseek 目录
4、进入D:\usr\local\coreseek\etc 新建 discuz.conf配置文件,内容以下
#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库
#源定义
source mysql
{
type = mysql
sql_host = localhost
sql_user = root #(替换成你mysql数据库的用户名)
sql_pass = dragonplan #(替换成你mysql数据库的密码)
sql_db = bbs #(替换成你discuz论坛数据库名)
sql_port = 3306 #(mysql默认端口)
sql_query_pre = SET NAMES utf8
sql_query = SELECT pid, fid, tid,authorid, dateline, author, subject, message FROM cdb_posts where first=1
#sql_query第一列id需为整数
#author、subject、message 作为字符串/文本字段,被全文索引
sql_attr_uint = fid #从SQL读取到的值必须为整数
sql_attr_timestamp = dateline #从SQL读取到的值必须为整数,作为时间属性
sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
sql_query_info = SELECT * FROM cdb_posts WHERE pid=$id #命令行查询时,从数据库读取原始数据信息
}
#index定义
index mysql
{
source = mysql #对应的source名称
path = D:/usr/local/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:D:/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 = D:/usr/local/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:D:/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 = D:/usr/local/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = D:/usr/local/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = D:/usr/local/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
binlog_path = #关闭binlog日志
}
5、建立检索
打开cmd命令行,进入 D:/usr/local/coreseek/bin 目录
执行
indexer -c d:\usr\local\coreseek\etc\discuz.conf --all
如下图:
6、运行索引
cmd 进入 D:/usr/local/coreseek/bin 目录 执行以下命令:
searchd -c d:\usr\local\coreseek\etc\discuz.conf
请注意:保持cmd窗口不要被关闭!否则索引服务将被关闭。
7、php全文检索
将 D:\usr\local\coreseek\api\sphinxapi.php 文件放到你discuz include目录下
require_once './include/common.inc.php'; require_once './include/sphinxapi.php';
$cl = new SphinxClient (); $cl->SetServer ( '127.0.0.1', 9312); $cl->SetConnectTimeout ( 1 ); $cl->SetArrayResult ( true ); $cl->SetMatchMode ( SPH_MATCH_ANY); $res = $cl->Query ( $keyword, "*" );
foreach($res['matches'] as $v) { $arrID[] = $v['id']; } $sql = "SELECT pid,subject FROM {$tablepre}posts WHERE pid in(".join(',', $arrID).")"; $query = $db->query($sql); while($row = $db->fetch_array($query)) { $list[] = $row; } echo '
'; print_r($list); echo '';