ホームページ > バックエンド開発 > PHPチュートリアル > Sphinx は効率的な検索関数のサンプル分析を作成します

Sphinx は効率的な検索関数のサンプル分析を作成します

WBOY
リリース: 2023-10-03 09:16:02
オリジナル
783 人が閲覧しました

Sphinx 编写高效的搜索功能实例解析

Sphinx は、大規模なテキスト検索のニーズを効率的に処理できるオープンソースの全文検索エンジンです。この記事では、例を使用して Sphinx を使用して効率的な検索関数を作成する方法を分析し、具体的なコード例を示します。

  1. Sphinx のインストール
    まず、サーバーに Sphinx をインストールする必要があります。 Sphinx 公式 Web サイト (https://sphinxsearch.com/) から最新バージョンのインストーラーをダウンロードし、指示に従ってインストールできます。
  2. インデックスの作成
    検索関数の作成を開始する前に、まず、検索する必要があるテキスト データを保存するインデックスを作成する必要があります。アプリケーションでいくつかの製品に関する情報を検索する必要があるとします。各製品には、タイトル、説明、価格などの属性が含まれています。 「product」というインデックスを作成できます。

    まず、Sphinx に接続する MySQL データベースを作成し、製品データをインポートします。 「products」というデータベースがあり、その中に製品のタイトル、説明、価格などのフィールドを含む「product_info」というテーブルが含まれているとします。

    次に、「products」インデックスに適した構成ファイルを作成する必要があります。 「products.conf」という名前のファイルを作成し、次の内容を追加します。

    source products
    {
        type = mysql
        sql_host = localhost
        sql_user = username
        sql_pass = password
        sql_db = products
        sql_port = 3306
    
        sql_query = SELECT id, title, description, price FROM product_info
        sql_attr_uint = price
    }
    
    index products
    {
        source = products
        path = /path/to/index/products
        charset_type = utf-8
    }
    ログイン後にコピー

    これは、MySQL データベースの接続情報とクエリ ステートメントを指定します。 「sql_attr_uint = 価格」は、価格フィールドが符号なし整数型の属性であることを意味します。

    最後に、次のコマンドを使用してインデックスを作成します。

    $ indexer --config /path/to/products.conf --all
    ログイン後にコピー
  3. 検索関数の作成
    ここで、Sphinx の検索関数の作成を開始できます。以下は簡単な PHP の例です。

    <?php
    require('sphinxapi.php');
    
    $sphinx = new SphinxClient();
    $sphinx->setServer('localhost', 9312);
    
    $keyword = $_GET['keyword'];
    
    $sphinx->setMatchMode(SPH_MATCH_ANY);
    $sphinx->setSortMode(SPH_SORT_RELEVANCE);
    
    $result = $sphinx->query($keyword, 'products');
    
    if ($result['total'] > 0) {
        foreach ($result['matches'] as $match) {
            echo 'ID: ' . $match['id'] . '<br>';
            echo 'Title: ' . $match['attrs']['title'] . '<br>';
            echo 'Description: ' . $match['attrs']['description'] . '<br>';
            echo 'Price: ' . $match['attrs']['price'] . '<br><br>';
        }
    } else {
        echo 'No results found.';
    }
    ?>
    ログイン後にコピー

    このコードでは、まず SphinxClient オブジェクトを作成し、Sphinx サーバーのアドレスとポート番号を指定します。次に、ユーザーが入力したキーワードを受け取り、照合モードと並べ替えモードを設定します。

    最後に、query() メソッドを呼び出して検索を実行し、結果をループして一致する製品情報を出力します。

  4. テストを実行する
    上記のコードを PHP ファイル (search.php など) として保存し、Web サーバーにデプロイします。その後、search.php?keyword=keyword にアクセスして検索できます。

    たとえば、http://yourdomain.com/search.php?keyword=mobilephone にアクセスすると、キーワード「携帯電話」を含む製品が検索され、その結果がページに表示されます。

上記の手順により、Sphinx をベースとした効率的な検索機能が実装されました。 Sphinx は、実際のニーズに応じて検索パフォーマンスを最適化するための豊富な構成オプションとクエリ構文を提供します。この記事で提供されているコード例が、読者が Sphinx を理解し、Sphinx を使用して効率的な検索関数を作成するのに役立つことを願っています。

以上がSphinx は効率的な検索関数のサンプル分析を作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート