Sphinx は、大規模なテキスト検索のニーズを効率的に処理できるオープンソースの全文検索エンジンです。この記事では、例を使用して Sphinx を使用して効率的な検索関数を作成する方法を分析し、具体的なコード例を示します。
インデックスの作成
検索関数の作成を開始する前に、まず、検索する必要があるテキスト データを保存するインデックスを作成する必要があります。アプリケーションでいくつかの製品に関する情報を検索する必要があるとします。各製品には、タイトル、説明、価格などの属性が含まれています。 「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
検索関数の作成
ここで、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() メソッドを呼び出して検索を実行し、結果をループして一致する製品情報を出力します。
テストを実行する
上記のコードを PHP ファイル (search.php など) として保存し、Web サーバーにデプロイします。その後、search.php?keyword=keyword にアクセスして検索できます。
たとえば、http://yourdomain.com/search.php?keyword=mobilephone にアクセスすると、キーワード「携帯電話」を含む製品が検索され、その結果がページに表示されます。
上記の手順により、Sphinx をベースとした効率的な検索機能が実装されました。 Sphinx は、実際のニーズに応じて検索パフォーマンスを最適化するための豊富な構成オプションとクエリ構文を提供します。この記事で提供されているコード例が、読者が Sphinx を理解し、Sphinx を使用して効率的な検索関数を作成するのに役立つことを願っています。
以上がSphinx は効率的な検索関数のサンプル分析を作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。