PHP 读取sphinx的简单示例

前端之家收集整理的这篇文章主要介绍了PHP 读取sphinx的简单示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP读取sphinx实例感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!
1.未采用MysqL二进制网络协议的代码
  1. /**
  2. * PHP读取sphinx实例
  3. *
  4. * @param
  5. * @arrange 网: 512Pic.com
  6. **/
  7. //检查sphinx是否能连接,不能重试两次,能则连接,不用MysqL协议,仅供参考
  8. function checkSphinxNoMysqL() {
  9. $flag = true;
  10. $retries = 0;
  11. while ( $flag && $retries < 2 ) {
  12. $s = new SphinxClient ();
  13. $s->setServer ( $_ENV ['db_host'],$_ENV ['current_sphinx_port'] );
  14. if (! $s->open ()) {
  15. //此处为如果连接不上就更改配置文件,根据项目需要来写
  16. //global $configDefault;
  17. //updateConfig ( $configDefault );
  18. $retries ++;
  19. } else {
  20. $flag = false;
  21. break;
  22. }
  23. }
  24. return $s;
  25. if ($retries >= 2) {
  26. //sendemail or not
  27. return false;
  28. }
  29. }
  30. $order_column = 'id DESC,time DESC';//排序规则
  31. //$s = checkSphinx ();
  32. $s = new SphinxClient ();
  33. $s->setServer ( 'sphinx_host','sphinx_port');
  34. //以上两句代码亦可使用$s = checkSphinx ();来代替
  35. $indexname = "page_keyword";//索引名字
  36. $s->setMatchMode ( SPH_MATCH_PHRASE );
  37. $s->SetSortMode ( SPH_SORT_EXTENDED,$order_column );
  38. $s->setMaxQueryTime ( 100000 );
  39. $s->setLimits ( 0,$limit_total,$limit_total );
  40. $keyword_sphinx = iconv ( "gbk","utf-8",$keyword );
  41. $result = $s->query ( $keyword_sphinx,$indexname );
  42. $s->close ();
  43. if ($result ['total'] > 0) {
  44. var_dump($result ['matches']);
  45. //根据打印出的结果进行相应的读取
  46. }
  47. /*** 来自编程之家 jb51.cc(jb51.cc) ***/
2.采用MysqL二进制网络协议的代码
  1. /**
  2. * PHP读取sphinx实例
  3. *
  4. * @param
  5. * @arrange 网: 512Pic.com
  6. **/
  7. //检查sphinx是否能连接,不能重试两次,能则连接,用MysqL14协议
  8. protected function checkSphinx() {
  9. $flag = true;
  10. $retries = 0;
  11. while ( $flag && $retries < 2 ) {
  12. $conn = MysqL_connect ( "{$_ENV ['db_host']}:{$_ENV ['current_sphinx_port']}" );
  13. if (! $conn) {
  14. //此处为如果连接不上就更改配置文件,根据项目需要来写
  15. //global $configDefault;
  16. //updateConfig ( $configDefault );
  17. $retries ++;
  18. } else {
  19. $flag = false;
  20. break;
  21. }
  22. }
  23. if ($retries >= 2) {
  24. die ( "Please contact with administrator." );
  25. }
  26. return $conn;
  27. }
  28. $order_column = 'id DESC,time DESC';//排序规则
  29. $conn = MysqL_connect ( "sphinx_host:sphinx_port" );
  30. //以上代码亦可使用$conn = checkSphinx ();来代替
  31. if (! $conn) {
  32. return - 1;//连接不上返回状态
  33. }
  34. $keyword_sphinx = iconv ( "gbk",$keyword );
  35. //keyword为索引名字
  36. $sql = "select * from keyword where match('{$keyword_sphinx}') order by {$order_column} limit {$limit_total} option max_matches={$limit_total}";
  37. $result = @MysqL_query ( $sql,$conn );
  38. $i = 0;
  39. while ( ($row = MysqL_fetch_array ( $result )) !== false ) {
  40. var_dump($row);
  41. //根据打印出的结果进行相应的读取
  42. }
  43. $totals = $this->getTotalFound ($conn);//获取总记录个数
  44. /*** 来自编程之家 jb51.cc(jb51.cc) ***/

猜你在找的PHP相关文章