coreseek在Windows下的安装和使用(即加上中文分词机制的Sphinx)

2018-01-03 17:45:00
linefo
原创
596


coreseek是装了中文词库的Sphinx!
我这里是coreseek4.1版本。



在这之前,推荐你先看一下Sphinx的工作原理:

http://www.linefo.com/index.php/article/28.html


安装和使用


解压下载后的coreseek4.1:

(可以看到比Sphinx还是多了一些东西的,data目录是我新建的索引生成目录,log目录是新建的日志目录,log目录中有我自己新建的几个文件)



bin目录下新建配置文件csft.conf,参考配置如下:


#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source src1
{
	type			= mysql #数据源,这里是mysql
	sql_host		= localhost # 数据库服务器
	sql_user		= root # 数据库用户
	sql_pass		=  # 数据库密码(这里空密码不能用'')
	sql_db			= test # 数据库
	sql_port		= 3306	# 端口
	sql_query_pre	= SET NAMES utf8 # 在执行sql_query之前执行的查询
	
	# 需要包含主键,以及要做sphinx全文索引的字段(和MySQL中的全文索引无关)
	sql_query		= SELECT * FROM `documents`
}


index test1
{
	source			= src1 # 索引数据源,指前面source的名称
	path			= D:/coreseek/data/ # 放索引文件的目录
	mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0
	
	# 下面这里是设置中文分词的关键
	charset_dictpath = d:\coreseek\etc\ # 配置目录,WIN下给出绝对路径
	charset_type        = zh_cn.utf-8 # 编码
}

indexer
{
	mem_limit		= 128M # 索引内存限制值
}

# 搜索服务配置

searchd
{
	listen			= 9312 # 监听端口
	listen			= 9306:mysql41 # 监听端口
	log			= D:/coreseek/log/test.log # 指定监听日志文件
	query_log		= D:/coreseek/log/query.log # 指定查询日志文件
	read_timeout		= 5 # 客户端读操作超时时间
	max_children		= 30 # 并行执行搜索的数目
	pid_file		= D:/coreseek/log/searchd.pid # 进程id文件
	# seamless_rotate		= 1 # 无缝轮转索引,增大消耗内存减少轮转的时间(Win下启动searchd需要注释这个)
	preopen_indexes		= 1 # 索引预开启,是否强制打开所有索引文件
	unlink_old		= 1 # 索引轮换成功后,是否删除以.old为扩展名的索引拷贝
	workers			= threads # for RT to work # 多处理模式,win下默认为threads,linux下默认为form
}



操作生成索引(test1是配置文件里面的indexer test1,此外,好像不能自动生成索引?Linux下可以通过定时脚本解决):


测试数据:


在PHP中使用


安装PHP的Sphinx扩展,在该文章中有讲到:http://www.linefo.com/index.php/article/25.html

在bin目录运行searchd服务程序(第三方程序通过访问该服务进行交互):


PHP脚本:


        $Sphinx = new SphinxClient(); // 使用Sphinx类
        $Sphinx->SetServer("localhost", 9312); // 服务器地址和端口(端口在Searchd的配置那里)
        $Sphinx->SetMatchMode(SPH_MATCH_ANY); // 设置为 “匹配查询词中的任意一个” 模式
        $Sphinx->SetArrayResult(true); // 设置搜索结果集以数组形式返回
        $result = $Sphinx->query("夜", "*"); // 查询字符串和索引名称,*表示所有
        var_dump($result);exit;



结果(之后用返回的主键id再进行MySQL查询即可):

文章分类
联系我们
联系人: Mr.Chen
QQ: 185391277