PHP と Manticore Search を使用した多言語検索機能の開発
グローバリゼーションの急速な発展に伴い、世界中のユーザーのニーズを満たすために、ますます多くの Web サイトやアプリケーションが多言語検索機能をサポートする必要があります。この記事では、PHP と Manticore Search (オープン ソースの検索エンジン Sphinx をベースにした高性能検索エンジン) を使用して多言語検索機能を実装する方法をコード例とともに紹介します。
まず、サーバーに Manticore Search をインストールして構成する必要があります。インストールを完了するには、Manticore Search の公式ドキュメント (https://manual.manticoresearch.com/installation) を参照してください。
検索する前に、検索するデータを Manticore Search にインポートする必要があります。製品情報を含む「products」という名前のテーブルがあるとします。このテーブルには、「product_name_en」や「product_name_cn」などの多言語フィールドが含まれています。
まず、Manticore Search のインデックスを設定する必要があります。Manticore Search が提供するコマンド ライン ツールを使用して、この手順を完了できます。
$ indexer -c /path/to/manticore.conf --all
次に、Manticore Search が提供する MySQL インターフェイスを使用してデータをインポートできます。まず、MySQL 接続を作成する必要があります。
$mysqli = new mysqli('host', 'user', 'password', 'database'); if ($mysqli->connect_errno) { die("Failed to connect to MySQL: " . $mysqli->connect_error); }
次に、SQL ステートメントを使用してデータを Manticore Search に挿入できます。
$sql = 'SELECT id, product_name_en, product_name_cn FROM products'; $result = $mysqli->query($sql); $all_rows = ''; while ($row = $result->fetch_assoc()) { $all_rows .= '(' . $row['id'] . ', "' . $row['product_name_en'] . '", "' . $row['product_name_cn'] . '"),'; } $all_rows = rtrim($all_rows, ','); $sql = 'REPLACE INTO products (id, product_name_en, product_name_cn) VALUES ' . $all_rows; $mysqli->query($sql); if ($mysqli->error) { die("Failed to insert data into Manticore Search: " . $mysqli->error); }
上記のコードにより、Manticore Search にデータが正常にインポートされました。
次に、多言語検索をサポートできる PHP コードを記述する必要があります。
$query = 'apple'; // 根据当前语言选择搜索字段 $language = 'en'; if ($language === 'cn') { $search_field = 'product_name_cn'; } else { $search_field = 'product_name_en'; } // 连接Manticore Search的搜索接口 $cl = new ManticoreSearchClient(); $cl->connect(); // 执行搜索 $result = $cl->search('products', $query, array('index' => 'products', 'field_weights' => array($search_field => 100))); // 解析搜索结果 $matches = array(); if ($result['total'] > 0) { foreach ($result['matches'] as $match) { $matches[] = $match['attrs']['id']; } } // 查询原始数据 $sql = 'SELECT * FROM products WHERE id IN (' . implode(',', $matches) . ')'; $result = $mysqli->query($sql); while ($row = $result->fetch_assoc()) { echo $row['product_name_en'] . '<br>'; }
上記のコードにより、現在の言語に応じて対応する検索フィールドを選択し、検索キーワードに基づいて検索を実行できます。最後に、元のデータ テーブルを通じて関連する検索結果を取得できます。
概要
この記事では、PHP と Manticore Search を使用して多言語検索機能を開発する方法を紹介します。上記のサンプル コードを使用すると、世界中のユーザーのニーズを満たす多言語検索機能を簡単に実装できます。同時に、Manticore Search は、検索パフォーマンスと機能をさらに最適化するための豊富な構成オプションと操作インターフェイスも提供します。
この記事が、多言語検索機能を開発している友人にとって役立つことを願っています。ご質問がございましたら、お気軽にコメント欄にメッセージを残してください。
以上がPHP と Manticore Search を使用した多言語検索機能の開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。