ホームページ  >  記事  >  バックエンド開発  >  PHPでスフィンクスを読み込む例

PHPでスフィンクスを読み込む例

WBOY
WBOYオリジナル
2016-07-25 09:03:061001ブラウズ
  1. //スフィンクスが接続できるかどうかを確認します。2回再試行することはできません。接続できた場合、mysqlプロトコルは使用されません。参考のみです
  2. function checkSphinxNoMysql() {
  3. $flag = true;
  4. $retries = 0;
  5. while ( $flag && $retries < 2 ) {
  6. $s = new SphinxClient ();
  7. $s->setServer ( $_ENV ['db_host'], $_ENV ['current_sphinx_port'] );
  8. if (! $s->open ()) {
  9. //接続できない場合に設定ファイルを変更します
  10. //global $configDefault;
  11. //updateConfig ( $configDefault );
  12. $retries ++;
  13. } else {
  14. $flag = false;
  15. Break;
  16. }
  17. }
  18. return $s;
  19. if ($retries >= 2) {
  20. // sendemail かどうか
  21. return false;
  22. }
  23. }
  24. $order_column = 'id DESC,time DESC';//順序付けルール
  25. //$s = checkSphinx ();
  26. $s = new SphinxClient ();
  27. $s ->setServer ( 'sphinx_host' , 'sphinx_port');
  28. //上記の 2 行のコードは $s = checkSphinx ();
  29. $indexname = "page_keyword";//インデックス名
  30. $s で置き換えることもできます->setMatchMode ( SPH_MATCH_PHRASE );
  31. $ s->SetSortMode ( SPH_SORT_EXTENDED, $order_column );
  32. $s->setMaxQueryTime ( 100000 );
  33. $s->setLimits ( 0, $limit_total, $limit_total );
  34. $keyword_sphinx = iconv ( "gbk", "utf-8", $keyword );
  35. $result = $s->query ( $keyword_sphinx, $indexname );
  36. $s->close ();
  37. if ($result ['total'] > 0) {
  38. var_dump($result ['matches']);
  39. //出力された結果に従って読み取ります
  40. }
  41. ?>
コードをコピー

2. mysql バイナリネットワークを使用するプロトコルのコード:

  1. //スフィンクスが接続できるかどうかを確認します。接続できる場合は、mysql14 プロトコル
  2. 保護関数 checkSphinx() {
  3. $flag = true;
  4. $retries = 0 を使用します。 ;
  5. while ( $flag && $retries < 2 ) {
  6. $conn = mysql_connect ( "{$_ENV ['db_host']}:{$_ENV ['current_sphinx_port']}" );
  7. if (! $conn) {
  8. //接続できない場合に設定ファイルを変更します
  9. //global $configDefault;
  10. //updateConfig ( $configDefault );
  11. $retries ++;
  12. } else {
  13. $flag = false;
  14. Break;
  15. }
  16. }
  17. if ($retries >= 2) {
  18. die ( "管理者に連絡してください。" );
  19. }
  20. return $conn;
  21. }
  22. $order_column = 'id DESC ,time DESC';//照合規則
  23. $conn = mysql_connect ("sphinx_host:sphinx_port");
  24. //上記のコードは $conn = checkSphinx ();
  25. if (! $conn ) {
  26. return - 1;//接続は戻れず、ステータスが返されます
  27. }
  28. $keyword_sphinx = iconv ("gbk", "utf-8", $keyword);
  29. //キーワードはインデックス名です
  30. $sql = "select * from キーワード where match( '{$keyword_sphinx}') order by {$order_column} 制限 {$limit_total} オプション max_matches={$limit_total}";
  31. $result = @mysql_query ( $sql, $conn );
  32. $i = 0;
  33. while ( ($row = mysql_fetch_array ( $result )) !== false ) {
  34. var_dump($row);
  35. // 出力された結果に基づいて読み取ります
  36. }
  37. $totals = $this->getTotalFound ( $conn);//総レコード数を取得
  38. ?>
コードをコピー

総レコード数の取得方法 参考:結果数の取得方法スフィンクスql?ショーメタの詳細な説明?



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。