Développement de recherche PHP et Manticore : création d'un moteur de recherche basé sur des balises

WBOY
Libérer: 2023-08-06 08:40:01
original
1462 Les gens l'ont consulté

Développement de PHP et Manticore Search : créer un moteur de recherche basé sur des balises

Le moteur de recherche est une partie importante de l'Internet d'aujourd'hui, qui peut rapidement interroger, faire correspondre et présenter les informations requises par les utilisateurs à partir de grandes quantités de données. Cependant, les moteurs de recherche traditionnels ne fournissent souvent que des fonctions de base de récupération de texte intégral, qui ne suffisent pas pour une recherche et un filtrage précis des données. Dans cet article, nous présenterons comment utiliser PHP et Manticore Search pour créer un moteur de recherche basé sur des balises afin d'offrir une expérience de recherche plus précise et efficace.

Manticore Search est un moteur de recherche en texte intégral développé sur la base du moteur de recherche open source Sphinx. Il offre non seulement des fonctionnalités de recherche en texte intégral rapides et puissantes, mais prend également en charge les mises à jour d'index en temps réel et la syntaxe de requête complexe. PHP est un langage de script côté serveur populaire avec une large gamme d'applications et de riches bibliothèques de développement.

Avant de commencer, nous devons installer Manticore Search. Il peut être installé en suivant les étapes :

  1. Téléchargez et installez Manticore Search :

    $ wget https://github.com/manticoresoftware/manticoresearch/releases/download/3.6.0/manticore-3.6.0-200714-58157c26-release.tar.gz
    $ tar -xvf manticore-3.6.0-200714-58157c26-release.tar.gz
    $ cd manticore-3.6.0/bin
    $ ./searchd
    Copier après la connexion
  2. Créer un index :

    $ ./searchd
    $ mysql -P9306 -e "CREATE TABLE documents (id int, title text, content text, tags multi)"
    $ mysql -P9306 -e "INSERT INTO documents VALUES (1, 'Document 1', 'This is the content of document 1', 'php, search')"
    $ mysql -P9306 -e "INSERT INTO documents VALUES (2, 'Document 2', 'This is the content of document 2', 'mysql, database')"
    $ mysql -P9306 -e "INSERT INTO documents VALUES (3, 'Document 3', 'This is the content of document 3', 'php, database')"
    Copier après la connexion

Maintenant que nous avons terminé l'installation et la création de l'index de Manticore Search, nous allons passer à autre chose. au processus d'écriture de code PHP.

Tout d’abord, nous devons installer l’extension Manticore Search pour PHP. Il peut être installé en suivant les étapes :

  1. Téléchargez et compilez l'extension :

    $ git clone https://github.com/manticoresoftware/php-manticore.git
    $ cd php-manticore
    $ phpize
    $ ./configure
    $ make
    $ sudo make install
    Copier après la connexion
  2. Activez l'extension dans le fichier php.ini :

    extension=manticore.so
    Copier après la connexion

Après avoir terminé les étapes ci-dessus, nous pouvons commencer à écrire PHP code pour créer le moteur de recherche basé sur des balises. Voici un exemple de code :

<?php
$host = 'localhost';
$port = 9306;
$index = 'default';
$query = 'php';

// 连接Manticore Search
$conn = new ManticoreSearchConnection();
$conn->connect($host, $port);

// 创建查询
$search = new ManticoreSearchSearch($conn);
$search->index($index);
$search->limit(10);
$search->setMatchMode(ManticoreSearchSearch::SPH_MATCH_EXTENDED);

// 添加标签过滤条件
$search->setFilter('tags', [$query], true);

// 发送查询请求
$result = $search->query('');

// 处理查询结果
if (!empty($result['matches'])) {
    foreach ($result['matches'] as $match) {
        echo 'ID: ' . $match['id'] . '<br>';
        echo 'Title: ' . $match['attrs']['title'] . '<br>';
        echo 'Content: ' . $match['attrs']['content'] . '<br>';
        echo 'Tags: ' . $match['attrs']['tags'] . '<br><br>';
    }
} else {
    echo 'No results found.';
}

// 关闭连接
$conn->close();
Copier après la connexion

Le code ci-dessus montre comment utiliser Manticore Search pour la recherche basée sur des balises. Nous avons d'abord créé un objet de connexion via la classe ManticoreSearchConnection, puis créé un objet de requête via la classe ManticoreSearchSearch. Nous spécifions l'index de la requête et le nombre maximum de résultats renvoyés en définissant les attributs index et limit. Ensuite, nous définissons les critères de filtre pour la balise afin que seuls les documents contenant cette balise soient renvoyés.

Enfin, nous envoyons la demande de requête en appelant la méthode de requête et traitons les résultats renvoyés. Si le résultat de la requête n'est pas vide, nous pouvons parcourir le tableau des correspondances et afficher l'ID du document, le titre, le contenu et les balises correspondants. Si le résultat de la requête est vide, « Aucun résultat trouvé ».

Grâce aux étapes ci-dessus, nous avons réussi à créer un moteur de recherche basé sur des balises en utilisant PHP et Manticore Search. Grâce à une structure d'index et à des conditions de requête raisonnables, nous pouvons obtenir des fonctions de recherche plus précises et plus efficaces pour répondre aux besoins personnalisés des utilisateurs. J'espère que cet article sera utile aux lecteurs qui utilisent PHP et Manticore Search pour le développement de moteurs de recherche.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!