Maison  >  Article  >  développement back-end  >  Développement de recherche PHP et Manticore : conseils pour améliorer le classement des résultats de recherche

Développement de recherche PHP et Manticore : conseils pour améliorer le classement des résultats de recherche

WBOY
WBOYoriginal
2023-08-06 18:04:43920parcourir

Développement de recherche PHP et Manticore : conseils pour améliorer le classement des résultats de recherche

Les moteurs de recherche font partie intégrante des applications Internet modernes. Le classement des résultats de recherche affecte directement l’expérience utilisateur et la précision de la recherche. Dans cet article, nous aborderons des conseils sur la façon d'améliorer le classement des résultats de recherche pendant le développement à l'aide de PHP et Manticore Search.

  1. Installer Manticore Search

Tout d'abord, nous devons installer Manticore Search. Il peut être installé sur Ubuntu via la commande suivante :

sudo apt-get install manticoresearch

Une fois l'installation terminée, démarrez le service Manticore Search :

sudo service manticoresearch start
  1. Préparation des données

Tout d'abord, nous devons importer les données dans Manticore Search. Ici, nous utiliserons un exemple simple, en supposant que nous disposons d'un site Web de commerce électronique contenant des informations relatives au produit telles que le nom du produit, la description, le prix, etc.

Pour faciliter la démonstration, nous créons un index nommé « produits » et ajoutons quelques exemples de données :

<?php

// 连接Manticore Search服务
$dsn = 'mysql:host=127.0.0.1;port=9306';
$username = '';
$password = '';

$pdo = new PDO($dsn, $username, $password);

// 创建索引
$sql = "CREATE TABLE products (
    id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    price FLOAT(10,2) NOT NULL
) ENGINE = Manticore;";

$pdo->exec($sql);

// 添加示例数据
$productData = [
    ['name' => 'iPhone 12', 'description' => 'The latest iPhone model', 'price' => 999.99],
    ['name' => 'Samsung Galaxy S21', 'description' => 'Powerful Android phone', 'price' => 799.99],
    ['name' => 'Google Pixel 5', 'description' => 'Flagship Google phone', 'price' => 699.99],
];

foreach ($productData as $product) {
    $sql = "INSERT INTO products (name, description, price) VALUES (?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$product['name'], $product['description'], $product['price']]);
}

echo 'Data imported successfully!';
  1. Implémentation de la recherche de base

Ensuite, implémentons une fonction de recherche de base. Les utilisateurs peuvent rechercher des noms et des descriptions de produits par mots-clés et renvoyer des listes de produits associées. Nous pouvons utiliser la fonction de recherche en texte intégral fournie par Manticore Search pour y parvenir.

<?php

// 连接Manticore Search服务
$dsn = 'mysql:host=127.0.0.1;port=9306';
$username = '';
$password = '';

$pdo = new PDO($dsn, $username, $password);

// 执行搜索
$keyword = 'iPhone';
$sql = "SELECT * FROM products WHERE MATCH (:keyword)";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':keyword', $keyword);
$stmt->execute();

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示搜索结果
foreach ($results as $result) {
    echo 'Product Name: ' . $result['name'] . PHP_EOL;
    echo 'Description: ' . $result['description'] . PHP_EOL;
    echo 'Price: ' . $result['price'] . PHP_EOL;
    echo '------------------------' . PHP_EOL;  
}
  1. Améliorer le tri des résultats de recherche

Afin d'améliorer le tri des résultats de recherche, nous pouvons utiliser la fonction de tri de Manticore Search. Nous pouvons trier les résultats de la recherche selon différents champs, tels que le prix, le volume des ventes, etc.

Voici un exemple de tri des résultats de recherche en fonction du prix du produit :

<?php

// 连接Manticore Search服务
$dsn = 'mysql:host=127.0.0.1;port=9306';
$username = '';
$password = '';

$pdo = new PDO($dsn, $username, $password);

// 执行搜索
$keyword = 'iPhone';
$sql = "SELECT * FROM products WHERE MATCH (:keyword) ORDER BY price DESC";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':keyword', $keyword);
$stmt->execute();

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示搜索结果
foreach ($results as $result) {
    echo 'Product Name: ' . $result['name'] . PHP_EOL;
    echo 'Description: ' . $result['description'] . PHP_EOL;
    echo 'Price: ' . $result['price'] . PHP_EOL;
    echo '------------------------' . PHP_EOL;  
}

Dans cet exemple, nous trions le prix par ordre décroissant par ORDER BY price DESC. ORDER BY price DESC对价格进行降序排序。

除了价格,我们还可以根据其他字段进行排序,比如销量、评分等。只需相应地修改ORDER BY

En plus du prix, nous pouvons également trier en fonction d'autres champs, tels que le volume des ventes, les notes, etc. Modifiez simplement la clause ORDER BY en conséquence.

Résumé

Cet article présente comment utiliser PHP et Manticore Search pour développer des fonctions de recherche et fournit quelques conseils pour améliorer le classement des résultats de recherche. Grâce à ces techniques, nous pouvons effectuer un tri ciblé des résultats de recherche en fonction de différents besoins et scénarios, améliorant ainsi l'expérience utilisateur et la précision de la recherche.

J'espère que cet article pourra vous aider à résoudre les problèmes que vous rencontrez lors de l'optimisation du tri des résultats de recherche dans le développement PHP. Bonne chance dans vos efforts de développement ! 🎜

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