Sphinx+PHP検索サービス

Jun 23, 2016 pm 01:17 PM

自分の映画 Web サイトのリソースが徐々に増加するにつれて、映画リソース検索サービスを追加することが避けられなくなりました。データベース検索を直接操作すると、IO ポート要求が増加し、検索パフォーマンスが低下します。前回のプロジェクトで sphinx を使用する基礎があり、中国語の検索サービスのサポートに加えて、最終的に sphinx ベースの Coreseek 検索サービスを使用することにしました。

ダウンロードとインストールの手順 [Linux 環境でバージョン 4.1 を使用しており、システムは mysql および xml データ ソースをサポートしています]:

  1. coreseek ダウンロード アドレス、coreseek-4.1-beta.tar.gz パッケージをダウンロード

  2. 解凍gz パッケージ、tar zxvf coreseek-4.1-beta.tar.gz

  3. mmseg [中国語単語セグメンテーション パッケージ] をコンパイルしてインストールします

    1. ./bootstrap

    2. ./configure --prefix=/usr /local/mmseg3

      + usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr /local/mmseg3/lib / --with-mysql #with-mmseg-libs は mmseg 中国語単語セグメンテーション パスです
    3. make && make install
  4. 映画 Web サイトの更新サイクルは比較的長く、sphinx はインデックス作成にはメイン インデックス + 増分インデックスの方法を使用し、最後に 2 つのインデックス ファイルをマージします。ここで、独自の検索構成ファイルのデプロイを開始します:
    1. coreseek インストール ディレクトリに etc ファイルを入力し、.conf 構成ファイルを作成または変更します

    2. ソース ソースを構成します

    3. source movie
    4. {
    Type = mysql
sql_host = localhost #mysql データベースホスト

sql_user = root #mysql user

sql_pass = localhost #mysql ユーザーパスワード
    sql_db = movie #movie
  1. sql_port = 3306 # オプション、デフォルトは 3306 です

    sql_query_pre =セット名 utf8

  2. #インクリメンタルインデックスを作成します
  3. sql_query_pre = REPLACE INTO movie_sph_counter SELECT 1, MAX(id) FROM movie

    sql_query = SELECT id, UNIX_TIMESTAMP(cdate) AS date ,id AS movie_id ,name, year, type,status,sync_status FROM movie WHERE id<= ( SELECT max_movie_id From Movie_SPH_COUNTER where counter_id = 1)

    1. #検索戻りフィールド
    2. SQL_ATTR_UINT = Movie_id

      SQL_UINT = Year
      SQL_UINT = TYPE
      SQL_ATTR_UINT = Date
      SQL_ATTR_UINT = Status
      SQL_ATTR_UINT = _STATUS
      SQL_FIELD_STRING = NAME

      SQL_INFO_PRE = SET NAMES UTF8 # コマンドラインでクエリを実行する場合は、正しい文字セットを設定します
      sql_query_info = SELECT * FROM movie WHERE id=$id # コマンドラインでクエリを実行する場合は、データベースから元のデータ情報を読み取ります
      }


      #Incrementalインデックス ソース
      ソース デルタ: 映画

      {

      sql_query_pre = SET NAMES utf8
      sql_query = SELECT id, UNIX_TIMESTAMP(cdate) AS date ,id AS movie_id ,name , year, type ,status,sync_status FROM movie WHERE id>( SELECT max_movie_id FROM movie_sph_counter counter_id=1 )
      sql_query_post_index = REPLACE INTO movie_sph_counter SELECT 1, MAX(id) FROM movie
      }




      構成インデックス
      I #

      1. #インデックス定義
      2. インデックスムービー

        {
        Source = Movie #対応するソース名
        PATH =/usr/Local/Coreseek/VAR/Movie #実際に使用する絶対パスは/usr /localのように変更してください/coreseek/var/...
        docinfo = extern
        mlock = 0
        morphology = none
        min_word_len = 1
        html_strip = 0

        #中国語単語セグメンテーション設定、詳細については、http://www.coreseek.cn を確認してください。 /products-install/coreseek_mmseg/
        charset_dictpath = /usr/local/mmseg/etc/ #BSD および Linux 環境で設定し、/ シンボルで終わる mmseg パス

        charset_type = zh_cn.utf-8 #中国語エンコーディング
        }

        indexデルタ : movie
        {
        ソース = デルタ
        パス = /usr/local/coreseek/var/data/movie_delta #注意! !メインインデックスパスと同じ名前を使用しないでください。 docinfo = extern mlock = 0
        morphology = none
        min_word_len = 1
        html_strip = 0

        _dictpath = /usr/local/mmseg/etc/
        charset_type = zh_cn.utf-8
        }




        検索サービスを設定します

    3. #searchd サービス定義

      searchd
    4. {
        Listen = 9312 #ポート番号、自分で定義できます
      1. read_timeout = 5

        max_children = 30
        max_matches = 1000
        シームレス回転= 0
        preopen_indexes = 0
        unlink_old = 1
        compat_sphinxql_magics=0
        pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid #実際の絶対パスに変更してください (例: /usr/local/core) Seek/var/ ...
        log = /usr/local/coreseek/var/log/searchd_mysql.log #実際の絶対パスに変更してください。例: /usr/local/coreseek/var/...
        query_log = /usr/ local/coreseek/var/log/query_mysql.log #実際の絶対パスに変更してください。例: /usr/local/coreseek/var/...
        Binlog_path = #binlog ログを閉じる
        }




        インデックスを作成するコマンドを実行します: /usr/local/coreseek/bin/indexer -c movie.conf --all

      バックグラウンドで実行されている検索サービスを開始します: /usr/local/coreseek/ bin/searchd -c movie.conf
    5. スケジュールされたタスクを作成し、増分インデックス作成を実行します: /usr/local/coreseek/bin/indexer -c csft_movie.conf delta --rotate
    6. スケジュールされたタスクを作成してマージインデックス: /usr/local/coreseek/bin/indexer -c csft_movie.conf --merge movie delta --merge-dst-range selected 0 0 --rotate
    7. これで、sphinx+mysql に基づく検索サービスが追加されました。次のステップは、sphinxapi.php に基づいて検索インターフェイス コードを開発することです ……
    8. 初めて自分で Sphinx 検索サービスを構築し、最終的に Web サイト検索をテストしましたが、その速度は驚くべきものでした。
    9. ここでシェアしますので、皆さんのお役に立てれば幸いです


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPロギング:PHPログ分析のベストプラクティス PHPロギング:PHPログ分析のベストプラクティス Mar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles