读书人

sphinx 的装配及使用 windws centos c

发布时间: 2012-10-25 10:58:57 作者: rapoo

sphinx 的安装及使用 windws centos coreseek


$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true );
$cl->SetMatchMode ( SPH_MATCH_ANY);
$cl->SetLimits(20,10);//分页
$res = $cl->Query ( '已经被我们格式化了', "*" );

if(isset($res['matches'])){
?
??? $ids = '';
??? foreach($res['matches'] as $r){
??? ??? $ids .=$r['id'].',';
??? }
??? $ids = substr($ids,0,-1);
??? $idsarr = explode(',',$ids);
??? $conn = new mysqli('localhost','root','','demo');
??? $conn->set_charset('utf8');
??? $sql = "select id,title,contents from articles where id in ($ids)";
??? echo $sql;
??? $result = $conn->query($sql);
?
??
?? $words = array_keys($res['words']);
?? var_dump($words);
?? //将数据库查出来的数组放到新数组中,并使用数组的键名为IN 的ID,这样方便排序
?? $data = array();
??? while($i = $result->fetch_assoc()){
??? ??? echo $i['id'].replacestr($words,$i['title']).'<br/><br/>';
??? ??? echo replacestr($words,$i['contents']).'<br/>';*/
??? ??? $data[$i['id']] = $i;
??? }
??? foreach($idsarr as $i){
??? ??? echo '<br/>=================================<br/><br/><br/><br/>';
??? ??? echo $data[$i]['id'].replacestr($words, $data[$i]['title']).'<br/><br/>';
??? ??? echo replacestr($words, $data[$i]['contents']).'<br/>';
??? }
???
???
??? echo '<br/>';
??? echo '<br/>';
??? var_dump($res['matches']);
}else{
??? echo ' not matches<br/><br/>';
??? var_dump($res);
}

print_r($cl);
print_r($res);


function replacestr($arr,$str){
??? foreach($arr as $r){
??? ??? $str = str_replace($r,"<span style='color:red'>".$r."</span>",$str);
??? }
??? return $str;
}

?

这样就不需要进行索引合并(索引合并会带来较大的IO操作)

-----------------------------------2011-8-24---------------------------------------

?

参考:http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html#live-updates


??? --------------------------------------------
??? Uninstall (关闭):
??? mysql > UNINSTALL PLUGIN sphinx ;

??? 检查引擎模块是否正常加载
??? mysql> show engines;


??? CONNECTION='sphinx://localhost:3312/cgfinal';,这里表示这个表采用SPHINXSE引擎,字符集是utf8,与sphinx的连接串是'sphinx://localhost:3312/cgfinal,cgfinal是索引名称

?

============================

在 centos5.6 64位机器上用coreseek4.1 beta时出错

重装libliconv都不行

============================

/usr/local/sphinx/src/sphinx.cpp:15557: undefined reference to `libiconv_open'
libsphinx.a(sphinx.o)(.text+0x53a01):/usr/local/sphinx/src/sphinx.cpp:15575: undefined
reference to `libiconv'
libsphinx.a(sphinx.o)(.text+0x53a28):/usr/local/sphinx/src/sphinx.cpp:15581: undefined
reference to `libiconv_close'

?

官方解决方法

## 如果出现undefined reference to `libiconv'的类似错误,可以按照如下方法处理:
##方法一:(Linux使用)
## 直接执行:export LIBS="-liconv"
##然后再次configure后,进行编译安装make && make install

?

?

民间解决方法

?

安装sphinx时又报错
解决
一开始以为libiconv的问题,又重装了几次还是一样,最后终于找着办法了
编辑:
./src/MakeFile文件(必须confiure后在编辑? 这个意识是告诉g++编译器 要加入库iconv的支持)

LIBS = -lm -lz -lexpat? -L/usr/local/lib -lrt? -lpthread
改成
LIBS = -lm -lz -lexpat? -L/usr/local/lib -lrt? -lpthread?? -liconv

ok了?注意是liconv

读书人网 >操作系统

热点推荐