第一步:安装
安装coreseek请参考:BSD、Linux、Windows系统安装测试说明文档;
安装后,请确保安装测试说明文档中的各项测试都可以通过,以便coreseek做好准备,为你服务!
第二步:配置:
在BSD/Linux安装包的testpack/etc目录下,放置了演示的配置文件;
在Windows安装包的etc目录下,也放置了演示的配置文件;
如果是mysql数据库,可以将csft_mysql.conf拷贝为自己的配置文件,然后进行修改!其他数据库可以参考python数据源;
要查看配置的细节,可以访问Coreseek/Sphinx(0.9)中文手册了解详情和具体的配置参数。
配置文件的核心,为source和index配置,两者是成对出现的;如果需要设置针对多种情况或者多个数据表的索引,则可针对每一个编写对应的source和index配置;
source表示从何处取得原始数据,也就是数据源;index表示取得数据后如何索引;
source配置中,请确保可以使用给出的数据库服务器地址、用户、密码连接到对应的数据库,执行获取数据的SQL语句可以得到数据;否则coreseek无法得到数据,也就无法提供服务了。
一般情况下,sql_query给出读取数据的SQL语句,第一列为自增的ID字段,然后可以包括字符串字段,整数数值字段;整数数值字段需要在后面使用sql_attr_uint明确标注,有多个则分别标注即可。
index配置中,需要注意修改path参数,确保不与其他的搜索服务发生冲突;最后的search的配置中,也要修改对应的路径参数和端口参数,以防止冲突发生;
第三步:测试
首先,索引:使用bin目录下的indexer,执行:indexer -c 配置文件的路径 index名称
# /usr/local/coreseek/bin/indexer -c etc/csft.conf --all ##--all表示全部索引
##Windows下面为bin\indexer -c etc\csft.conf --all
##以下为正常索引全部数据时的提示信息:部分数据信息根据实际数据情况变化
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2010,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
using config file 'etc/csft.conf'...
indexing index '索引名称'...
collected 3 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 3 docs, 7585 bytes
total 0.075 sec, 101043 bytes/sec, 39.96 docs/sec
total 2 reads, 0.000 sec, 5.6 kb/call avg, 0.0 msec/call avg
total 7 writes, 0.000 sec, 3.9 kb/call avg, 0.0 msec/call avg
如果出现以上对应的提示,则表示配置正确,可以正常索引;
随后,启动搜索:使用bin目录下的searchd,执行:searchd -c 配置文件的路径 --console
# /usr/local/coreseek/bin/searchd -c etc/csft.conf --console
##Windows下面为bin\searchd -c etc\csft.conf --console
##以下为正常开启搜索服务时的提示信息:其中的port可以在配置文件中修改
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2010,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
using config file 'etc/csft.conf'...
listening on all interfaces, port=9312
如要继续测试搜索功能,请不要停止searchd,否则其他程序将无法连接到搜索服务端
BSD/Linux环境下,测试成功后:
如要后台运行服务,则使用:searchd -c 配置文件的路径,将searchd作为后台服务运行;
如果要停止后台服务,则使用:searchd -c 配置文件的路径 --stop;
如果要更新后台服务的索引,则使用:indexer -c 配置文件的路径 index名称
然后,可以参考安装测试说明文档使用bin目录下的search进行测试,检查搜索是否可以正常进行;
如果要将搜索结果应用到自己的程序之中,请使用api目录下对应的api接口测试。PHP接口的测试如下:
//注意文件的编码格式需要保存为为UTF-8格式
require ( "sphinxapi.php" );
$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
//以下设置用于返回数组形式的结果
$cl->SetArrayResult ( true );
//取从头开始的前20条数据,0,20类似SQl语句的LIMIT 0,20
$cl->SetLimits(0,20);
//在做索引时,没有进行 sql_attr_类型 设置的字段,可以作为“搜索字符串”,进行全文搜索
$res = $cl->Query ( '搜索字符串', "*" ); //"*"表示在所有索引里面同时搜索,"索引名称(例如test或者test,test2)"则表示搜索指定的
//如果需要搜索指定全文字段的内容,可以使用扩展匹配模式:
//$cl->SetMatchMode(SPH_MATCH_EXTENDED);
//$res=cl->Query( '@title (测试)' , "*");
//$res=cl->Query( '@title (测试) @content ('网络')' , "*");
echo '
';';
print_r($res['matches']);
print_r($res);
print_r($cl->GetLastError());
print_r($cl->GetLastWarning());
echo '
返回结果之中(可见本页面最后的”搜索结果示例“),将包含match和word部分,match部分表示搜索到的结果,word部分表示搜索字符串的切分结果,total表示搜索到的结果总数;
如果total为0,可以print_r($cl)查看搜索服务器是否返回了错误提示信息,或者检查搜索字符串是否真的可以匹配信息。
match之中,包含了获取到的数据的ID信息,以及所包含的整数字段的属性信息,根据ID信息,可以从数据库之中,取到对应的原始数据的信息,以供页面显示或者其他程序使用;
MySQL读取示例:
SELECT * FROM 数据表 WHERE ID IN(id1,id2,id3...,idn) ORDER BY FIND_IN_SET(ID,"id1,id2,id3...,idn")
具体的搜索API,还包括排序、过滤等,可以访问Coreseek/Sphinx(0.9)中文手册了解API详情和具体的使用方式。
然后,你就可以在你的其他用用之中,包含以上的代码,并根据自己的需要,将用户或者其他代码传递的参数应用到搜索上面来,并根据返回的结果获取对应的数据进行显示或者处理!