Maison  >  Article  >  développement back-end  >  Développer des capacités de recherche multilingues en utilisant PHP et Manticore Search

Développer des capacités de recherche multilingues en utilisant PHP et Manticore Search

WBOY
WBOYoriginal
2023-08-06 09:13:42850parcourir

Développer une fonctionnalité de recherche multilingue à l'aide de PHP et Manticore Search

Avec le développement rapide de la mondialisation, de plus en plus de sites Web et d'applications doivent prendre en charge la fonctionnalité de recherche multilingue pour répondre aux besoins des utilisateurs mondiaux. Cet article présentera comment utiliser PHP et Manticore Search (un moteur de recherche hautes performances basé sur le moteur de recherche open source Sphinx) pour implémenter des capacités de recherche multilingues, avec des exemples de code.

  1. Installer Manticore Search

  Tout d'abord, nous devons installer et configurer Manticore Search sur le serveur. Vous pouvez vous référer à la documentation officielle de Manticore Search (https://manual.manticoresearch.com/Installation) pour terminer l'installation.

  1. Importation de données

Avant la recherche, nous devons importer les données à rechercher dans Manticore Search. Supposons que nous ayons une table nommée « produits » qui contient des informations sur le produit, qui contient des champs multilingues, tels que « nom_produit_en » et « nom_produit_cn ».

Tout d'abord, nous devons configurer l'index de Manticore Search. Vous pouvez utiliser l'outil de ligne de commande fourni par Manticore Search pour terminer cette étape.

$ indexer -c /path/to/manticore.conf --all

  Ensuite, nous pouvons utiliser l'interface MySQL fournie par Manticore Search pour importer des données. Tout d’abord, nous devons créer une connexion MySQL.

$mysqli = new mysqli('host', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
    die("Failed to connect to MySQL: " . $mysqli->connect_error);
}

Ensuite, nous pouvons utiliser des instructions SQL pour insérer des données dans 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);
}

 Grâce au code ci-dessus, nous avons réussi à importer les données dans Manticore Search.

  1. Recherche multilingue

Ensuite, nous devons écrire du code PHP capable de prendre en charge la recherche multilingue.

$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>';
}

Grâce au code ci-dessus, nous pouvons sélectionner le champ de recherche correspondant en fonction de la langue actuelle et effectuer une recherche basée sur les mots-clés de recherche. Enfin, nous pouvons obtenir des résultats de recherche pertinents grâce au tableau de données d'origine.

Résumé

 Cet article présente comment utiliser PHP et Manticore Search pour développer des fonctions de recherche multilingues. Avec l'exemple de code ci-dessus, nous pouvons facilement implémenter une fonctionnalité de recherche multilingue pour répondre aux besoins des utilisateurs du monde entier. Dans le même temps, Manticore Search fournit également une multitude d'options de configuration et d'interfaces de fonctionnement pour optimiser davantage les performances et les fonctions de recherche.

J'espère que cet article pourra être utile aux amis qui développent des fonctions de recherche multilingues. Si vous avez des questions, n'hésitez pas à laisser un message dans la zone de commentaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn