PHP と Manticore Search を使用した多言語検索機能の開発

WBOY
リリース: 2023-08-06 09:14:01
オリジナル
805 人が閲覧しました

PHP と Manticore Search を使用した多言語検索機能の開発

グローバリゼーションの急速な発展に伴い、世界中のユーザーのニーズを満たすために、ますます多くの Web サイトやアプリケーションが多言語検索機能をサポートする必要があります。この記事では、PHP と Manticore Search (オープン ソースの検索エンジン Sphinx をベースにした高性能検索エンジン) を使用して多言語検索機能を実装する方法をコード例とともに紹介します。

  1. Manticore Search のインストール

まず、サーバーに Manticore Search をインストールして構成する必要があります。インストールを完了するには、Manticore Search の公式ドキュメント (https://manual.manticoresearch.com/installation) を参照してください。

  1. データのインポート

検索する前に、検索するデータを 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 にデータが正常にインポートされました。

  1. 多言語検索

次に、多言語検索をサポートできる 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!