PHP读取sphinx实例
生活随笔
收集整理的這篇文章主要介紹了
PHP读取sphinx实例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
閱讀原文:http://yzswyl.cn/blread-1611.html
1.未采用mysql二進(jìn)制網(wǎng)絡(luò)協(xié)議的代碼:
//檢查sphinx是否能連接,不能重試兩次,能則連接,不用mysql協(xié)議,僅供參考 function checkSphinxNoMysql() {$flag = true;$retries = 0;while ( $flag && $retries < 2 ) {$s = new SphinxClient ();$s->setServer ( $_ENV ['db_host'], $_ENV ['current_sphinx_port'] );if (! $s->open ()) {//此處為如果連接不上就更改配置文件,根據(jù)項(xiàng)目需要來(lái)寫(xiě)//global $configDefault;//updateConfig ( $configDefault );$retries ++;} else {$flag = false;break;}}return $s;if ($retries >= 2) {//sendemail or notreturn false;} }$order_column = 'id DESC,time DESC';//排序規(guī)則 //$s = checkSphinx (); $s = new SphinxClient (); $s->setServer ( 'sphinx_host', 'sphinx_port'); //以上兩句代碼亦可使用$s = checkSphinx ();來(lái)代替 $indexname = "page_keyword";//索引名字 $s->setMatchMode ( SPH_MATCH_PHRASE ); $s->SetSortMode ( SPH_SORT_EXTENDED, $order_column ); $s->setMaxQueryTime ( 100000 ); $s->setLimits ( 0, $limit_total, $limit_total ); $keyword_sphinx = iconv ( "gbk", "utf-8", $keyword ); $result = $s->query ( $keyword_sphinx, $indexname ); $s->close (); if ($result ['total'] > 0) {var_dump($result ['matches']);//根據(jù)打印出的結(jié)果進(jìn)行相應(yīng)的讀取 }2.采用mysql二進(jìn)制網(wǎng)絡(luò)協(xié)議的代碼:
//檢查sphinx是否能連接,不能重試兩次,能則連接,用mysql14協(xié)議 protected function checkSphinx() {$flag = true;$retries = 0;while ( $flag && $retries < 2 ) {$conn = mysql_connect ( "{$_ENV ['db_host']}:{$_ENV ['current_sphinx_port']}" );if (! $conn) {//此處為如果連接不上就更改配置文件,根據(jù)項(xiàng)目需要來(lái)寫(xiě)//global $configDefault;//updateConfig ( $configDefault );$retries ++;} else {$flag = false;break;}}if ($retries >= 2) {die ( "Please contact with administrator." );}return $conn; }$order_column = 'id DESC,time DESC';//排序規(guī)則 $conn = mysql_connect ( "sphinx_host:sphinx_port" ); //以上代碼亦可使用$conn = checkSphinx ();來(lái)代替 if (! $conn) {return - 1;//連接不上返回狀態(tài) } $keyword_sphinx = iconv ( "gbk", "utf-8", $keyword ); //keyword為索引名字 $sql = "select * from keyword where match('{$keyword_sphinx}') order by {$order_column} limit {$limit_total} option max_matches={$limit_total}"; $result = @mysql_query ( $sql, $conn );$i = 0; while ( ($row = mysql_fetch_array ( $result )) !== false ) {var_dump($row);//根據(jù)打印出的結(jié)果進(jìn)行相應(yīng)的讀取 } $totals = $this->getTotalFound ($conn);//獲取總記錄個(gè)數(shù)如何獲取總記錄個(gè)數(shù)參考:sphinxql如何得到結(jié)果數(shù)?show meta的詳細(xì)說(shuō)明?
關(guān)于開(kāi)啟mysql二進(jìn)制網(wǎng)絡(luò)協(xié)議參考:Sphinx/MySQL 協(xié)議支持與SphinxQL
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xuejie/archive/2012/12/03/2800212.html
總結(jié)
以上是生活随笔為你收集整理的PHP读取sphinx实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UV坐标
- 下一篇: PHP 杂谈《重构-改善既有代码的设计》