Sphinx PHP の実際の事例とプロジェクト アプリケーション
はじめに:
今日のインターネット時代、情報量の爆発的な増加とユーザー ニーズの多様化に伴い、検索エンジンは、私たちが必要な情報を入手するための主な方法の 1 つになっています。このニーズを満たすために、全文検索エンジン Sphinx が登場しました。 Sphinx を PHP 言語と組み合わせて使用することも、多くのプロジェクトで選択されるようになりました。
この記事では、具体的なケースとプロジェクトのアプリケーションを例として、実際のプロジェクトでの Sphinx PHP のアプリケーションを紹介します。読者がよりよく理解できるように、いくつかのコード例も提供されます。
1. ケース 1: 記事検索機能
ニュース Web サイトがあり、ユーザーが興味のある記事をすぐに見つけられるように、効率的な記事検索機能を提供する必要があるとします。今回は Sphinx PHP を使用して実装します。
sudo apt-get install sphinxsearch
を実行することで実行できます。 news.conf
という名前のファイルを作成し、次の内容を書き込むことができます。 source news { type = mysql sql_host = localhost sql_user = username sql_pass = password sql_db = database sql_port = 3306 sql_query = SELECT article_id, article_title, article_content FROM articles sql_attr_timestamp = article_publish_time } index news_index { source = news path = /var/lib/sphinxsearch/data/news docinfo = extern mlock = 0 mlock_recs = 0 index_exact_words = 1 min_word_len = 3 charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F morphology = stem_en } searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads binlog_path = /var/lib/sphinxsearch/data }
上記の構成ファイルでは、データ ソース news
を定義します。データベースへの接続に関する関連情報と、インデックスを作成する必要があるフィールドを指定します。次に、news_index
という名前のインデックスを定義し、インデックス ファイルへのパスとその他の関連構成を指定します。
<?php require_once('sphinxapi.php'); $sphinx = new SphinxClient(); $sphinx->SetServer("localhost", 9312); $keyword = $_GET['keyword']; // 从用户输入中获取关键词 $result = $sphinx->Query($keyword, 'news_index'); // 在索引中搜索关键词 if ($result && $result['total']) { foreach ($result['matches'] as $match) { echo "文章标题:" . $match['attrs']['article_title'] . "<br>"; echo "文章内容:" . $match['attrs']['article_content'] . "<br><br>"; } } else { echo "没有找到相关文章"; } ?>
上記のコードでは、まず SphinxClient オブジェクトを作成し、サーバーに接続するための関連情報を設定します。次に、ユーザー入力からキーワードを取得し、Sphinx の Query メソッドを使用して、関連する記事のインデックスを検索します。最後に、検索結果から記事のタイトルと内容を取得して表示します。
上記は Sphinx PHP を使用して記事検索機能を実装する簡単な例です。このようにして、大量の記事の中から必要なものをすぐに見つけることができます。
2. ケース 2: 商品全文検索
EC サイトでは商品全文検索機能が必須です。今回はSphinx PHPを使用してリアルタイム商品検索機能を実装します。
sudo apt-get install sphinxsearch
を使用してインストールします。 products.conf
というファイルを作成し、次の内容を記述します。 source products { type = mysql sql_host = localhost sql_user = username sql_pass = password sql_db = database sql_port = 3306 sql_query = SELECT product_id, product_name, product_description FROM products sql_attr_uint = product_price } index products_index { source = products path = /var/lib/sphinxsearch/data/products docinfo = extern mlock = 0 morphology = stem_en } searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads binlog_path = /var/lib/sphinxsearch/data }
上記の構成ファイルでは、データ ソース products
を定義します。データベースへの接続に関する関連情報と、インデックスを作成する必要があるフィールドを指定します。次に、products_index
という名前のインデックスを定義し、インデックス ファイルへのパスとその他の関連構成を指定しました。
<?php require_once('sphinxapi.php'); $sphinx = new SphinxClient(); $sphinx->SetServer("localhost", 9312); $keyword = $_GET['keyword']; // 从用户输入中获取关键词 $result = $sphinx->Query($keyword, 'products_index'); // 在索引中搜索关键词 if ($result && $result['total']) { foreach ($result['matches'] as $match) { echo "商品名称:" . $match['attrs']['product_name'] . "<br>"; echo "商品描述:" . $match['attrs']['product_description'] . "<br>"; echo "商品价格:" . $match['attrs']['product_price'] . "<br><br>"; } } else { echo "没有找到相关商品"; } ?>
上記のコードは、フィールド名が異なることを除いて、記事検索関数と似ています。ユーザーが入力したキーワードに基づいてインデックス内の関連商品を検索し、検索結果を表示することもできます。
結論:
上記の事例の紹介を通じて、Sphinx PHP が実際のプロジェクトに適用されていることがわかります。 PHP言語と全文検索エンジンSphinxを組み合わせることで、効率的な記事検索・商品検索機能を実現します。ニュース Web サイトであっても、電子商取引 Web サイトであっても、その恩恵を受けることができます。
もちろん、Sphinx には、並べ替え、ページング、フィルタリングなど、他にも多くの機能とアプリケーション シナリオがあります。この記事の例が読者にインスピレーションを与え、より創造性やアイデアを刺激することができれば幸いです。
以上がSphinx PHPの実践事例とプロジェクトへの応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。