Maison  >  Article  >  développement back-end  >  Guide de développement de recherche PHP et Manticore : agrégation des résultats de recherche avec des suggestions

Guide de développement de recherche PHP et Manticore : agrégation des résultats de recherche avec des suggestions

WBOY
WBOYoriginal
2023-08-05 23:10:501566parcourir

Guide de développement de recherche PHP et Manticore : Agrégation des résultats de recherche avec des suggestions

Introduction :
Avec le développement continu de la technologie de recherche, les moteurs de recherche modernes sont devenus un composant essentiel de nombreuses applications Web. Dans le développement PHP, nous pouvons utiliser Manticore Search, un moteur de recherche en texte intégral open source, pour obtenir des fonctions de recherche rapides et efficaces. Cet article explique comment développer avec PHP et Manticore Search, et comment tirer parti de sa fonctionnalité de suggestion pour agréger les résultats de recherche.

I. Introduction à Manticore Search
Manticore Search est une version améliorée du moteur de recherche en texte intégral Sphinx, qui offre des performances plus élevées et plus de fonctionnalités. Il prend en charge des fonctionnalités telles que l'indexation distribuée, l'indexation en temps réel, plusieurs syntaxes de requête et des configurations de paramètres hautement personnalisables, permettant aux développeurs de répondre de manière flexible à divers besoins de recherche.

II. Installer et configurer Manticore Search
Tout d'abord, nous devons installer Manticore Search sur le serveur. Il est recommandé d'utiliser le gestionnaire de packages PHP Composer pour l'installer. Dans le fichier composer.json du répertoire du projet, ajoutez les dépendances suivantes :

{
    "require": {
        "bobthecow/manticoresearch": "^2.0"
    }
}

Puis exécutez composer install sur la ligne de commande pour installer Manticore Search.

Une fois l'installation terminée, nous devons la configurer. Créez un fichier de configuration dans le répertoire racine du projet et nommez-le manticore.conf. La configuration est la suivante :

index main
{
    type = plain
    path = /path/to/index
    source = src
}
searchd
{
    listen = localhost:9306:mysql41
    binlog_path = /path/to/binlog
    log = /path/to/log/searchd.log
}

Dans le fichier de configuration ci-dessus, nous définissons un index nommé main et un démon de recherche nommé searchd. En développement réel, une configuration plus détaillée peut être effectuée en fonction des besoins.

III. Créer un index et importer des données
Tout d'abord, nous devons créer un index pour stocker les données. En PHP, cela peut être réalisé en utilisant l'API fournie par Manticore Search.

<?php
require 'vendor/autoload.php';

use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQuery;
use ManticoresearchQueryBuilders;

$client = new Client();
$client->connect(['host' => 'localhost', 'port' => 9306]);

// 创建索引
$client->indexCreate('main');
$index = $client->getIndex('main');

// 创建字段
$index->fieldCreate([
    'name' => 'title',
    'type' => 'text',
    'indexed' => true,
]);

// 导入数据
$data = [
    ['id' => 1, 'title' => 'PHP 开发'],
    ['id' => 2, 'title' => 'Manticore Search'],
    ['id' => 3, 'title' => '全文搜索引擎'],
];

foreach ($data as $item) {
    $index->addDocument($item['id'], ['title' => $item['title']]);
}

// 等待索引刷新
$index->flush();
?>

IV. Implémenter la fonction de suggestion
Manticore Search fournit une fonction de suggestion, qui peut fournir des suggestions de recherche basées sur les mots-clés saisis par l'utilisateur. Vous trouverez ci-dessous un exemple simple qui montre comment utiliser la fonctionnalité de suggestions pour regrouper les résultats de recherche.

<?php
// 获取用户输入的关键字
$keyword = $_GET['keyword'];

// 创建一个布尔查询
$query = new BoolQuery();

// 添加全文搜索子查询
$query->addMust(new QueryMatchPhrasePrefix(['title' => $keyword]));

// 添加建议子查询
$suggestions = new BuildersSuggest(Suggest::RELEVANT_TERMS);
$suggestions->setMatchPhrase('title', $keyword);
$query->setSuggest($suggestions);

// 执行查询
$search = $client->search($query);

// 获取搜索结果
$results = $search->getRawResponse()['hits']['hits'];

// 获取建议结果
$suggest = $search->getSuggest();

// 输出搜索结果
foreach ($results as $result) {
    echo $result['_source']['title'] . "<br>";
}

// 输出建议结果
foreach ($suggest as $term) {
    echo $term['text'] . "<br>";
}
?>

V. Résumé
Cet article explique comment développer une fonctionnalité de recherche efficace à l'aide de PHP et de Manticore Search, et exploiter ses capacités de suggestion pour agréger les résultats de recherche. En utilisant rationnellement les API et les fonctions de Manticore Search, nous pouvons facilement créer un moteur de recherche puissant et offrir une meilleure expérience utilisateur. Nous espérons que les lecteurs pourront utiliser ces technologies de manière flexible dans le cadre du développement réel afin d'améliorer encore la qualité et les performances de la fonction 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!

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