Heim >Backend-Entwicklung >PHP-Tutorial >php读取sphinx的例子

php读取sphinx的例子

WBOY
WBOYOriginal
2016-07-25 09:03:061027Durchsuche
  1. //检查sphinx是否能连接,不能重试两次,能则连接,不用mysql协议,仅供参考
  2. function checkSphinxNoMysql() {
  3. $flag = true;
  4. $retries = 0;
  5. while ( $flag && $retries $s = new SphinxClient ();
  6. $s->setServer ( $_ENV ['db_host'], $_ENV ['current_sphinx_port'] );
  7. if (! $s->open ()) {
  8. //此处为如果连接不上就更改配置文件,根据项目需要来写
  9. //global $configDefault;
  10. //updateConfig ( $configDefault );
  11. $retries ++;
  12. } else {
  13. $flag = false;
  14. break;
  15. }
  16. }
  17. return $s;
  18. if ($retries >= 2) {
  19. //sendemail or not
  20. return false;
  21. }
  22. }
  23. $order_column = 'id DESC,time DESC';//排序规则
  24. //$s = checkSphinx ();
  25. $s = new SphinxClient ();
  26. $s->setServer ( 'sphinx_host', 'sphinx_port');
  27. //以上两句代码亦可使用$s = checkSphinx ();来代替
  28. $indexname = "page_keyword";//索引名字
  29. $s->setMatchMode ( SPH_MATCH_PHRASE );
  30. $s->SetSortMode ( SPH_SORT_EXTENDED, $order_column );
  31. $s->setMaxQueryTime ( 100000 );
  32. $s->setLimits ( 0, $limit_total, $limit_total );
  33. $keyword_sphinx = iconv ( "gbk", "utf-8", $keyword );
  34. $result = $s->query ( $keyword_sphinx, $indexname );
  35. $s->close ();
  36. if ($result ['total'] > 0) {
  37. var_dump($result ['matches']);
  38. //根据打印出的结果进行相应的读取
  39. }
  40. ?>
复制代码

2.采用mysql二进制网络协议的代码

  1. //检查sphinx是否能连接,不能重试两次,能则连接,用mysql14协议
  2. protected function checkSphinx() {
  3. $flag = true;
  4. $retries = 0;
  5. while ( $flag && $retries $conn = mysql_connect ( "{$_ENV ['db_host']}:{$_ENV ['current_sphinx_port']}" );
  6. if (! $conn) {
  7. //此处为如果连接不上就更改配置文件,根据项目需要来写
  8. //global $configDefault;
  9. //updateConfig ( $configDefault );
  10. $retries ++;
  11. } else {
  12. $flag = false;
  13. break;
  14. }
  15. }
  16. if ($retries >= 2) {
  17. die ( "Please contact with administrator." );
  18. }
  19. return $conn;
  20. }
  21. $order_column = 'id DESC,time DESC';//排序规则
  22. $conn = mysql_connect ( "sphinx_host:sphinx_port" );
  23. //以上代码亦可使用$conn = checkSphinx ();来代替
  24. if (! $conn) {
  25. return - 1;//连接不上返回状态
  26. }
  27. $keyword_sphinx = iconv ( "gbk", "utf-8", $keyword );
  28. //keyword为索引名字
  29. $sql = "select * from keyword where match('{$keyword_sphinx}') order by {$order_column} limit {$limit_total} option max_matches={$limit_total}";
  30. $result = @mysql_query ( $sql, $conn );
  31. $i = 0;
  32. while ( ($row = mysql_fetch_array ( $result )) !== false ) {
  33. var_dump($row);
  34. //根据打印出的结果进行相应的读取
  35. }
  36. $totals = $this->getTotalFound ($conn);//获取总记录个数
  37. ?>
复制代码

如何获取总记录个数参考:sphinxql如何得到结果数?show meta的详细说明?



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP中__set 与 __get使用示例 Nächster Artikel:php 中的url编码处理