ubuntu上 安装 基于sphinx 的 coreseek 全文搜索
原生sphinx不支持中文, sphinx-for-chinese匹配中文时也不返回结果 ,真纠结, 最好试了 coreseek,这个能正确返回结果了, 所以记录一下
1 http://www.coreseek.cn/products-install/step_by_step/ php调用
--------------------以下是安装步骤
##下载coreseek:coreseek 3.2.14:点击下载、coreseek 4.0.1:点击下载、coreseek 4.1:点击下载 $ wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz $ 或者 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.0.1-beta.tar.gz $ 或者 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz $ tar xzvf coreseek-3.2.14.tar.gz 或者 coreseek-4.0.1-beta.tar.gz 或者 coreseek-4.1-beta.tar.gz $ cd coreseek-3.2.14 或者 coreseek-4.0.1-beta 或者 coreseek-4.1-beta ##前提:需提前安装操作系统基础开发库及mysql依赖库以支持mysql数据源和xml数据源 ##安装mmseg $ cd mmseg-3.2.14 $ ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决 $ ./configure --prefix=/usr/local/mmseg3 $ make && make install $ cd .. ##安装coreseek $ cd csft-3.2.14 或者 cd csft-4.0.1 或者 cd csft-4.1 $ sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决 $ ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql ##如果提示mysql问题,可以查看MySQL数据源安装说明 $ make && make install $ cd .. ##测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文) $ cd testpack $ cat var/test/test.xml #此时应该正确显示中文 $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
$ /usr/local/coreseek/bin/searchd -c /usr/local/xxx/etc/csft.conf #后台运行,指定的conf文件
//php调用
//api文件在 /usr/local/src/coreseek-4.1-beta/csft-4.1/api下 ,这是我的解压路径,可以把整个文件api目录copy到你的网站目录,这样就能调用
<?php //注意文件的编码格式需要保存为为UTF-8格式 require("sphinxapi.php"); $cl = new SphinxClient(); $cl->SetServer('127.0.0.1', 9312); //以下设置用于返回数组形式的结果 $cl->SetArrayResult( true ); /* //ID的过滤 $cl->SetIDRange(3,4); //sql_attr_uint等类型的属性字段,需要使用setFilter过滤,类似SQL的WHERE group_id=2 $cl->setFilter('group_id',array(2)); //sql_attr_uint等类型的属性字段,也可以设置过滤范围,类似SQL的WHERE group_id2>=6 AND group_id2<=8 $cl->SetFilterRange('group_id2',6,8); */ //取从头开始的前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( '@content (是)' , "*"); echo '<pre>'; print_r($res['matches']); print_r($res); print_r($cl->GetLastError()); print_r($cl->GetLastWarning()); echo '</pre>'; ?>
检查页面 , 在返回的结果中有total_found,表示返回的数量
[total_found] => 2
....
完...
PHP程序员
人在北京
如有需要,可以站内联系我!!!