Maison >développement back-end >tutoriel php >Comment utiliser Sphinx pour la recherche en texte intégral dans le développement PHP

Comment utiliser Sphinx pour la recherche en texte intégral dans le développement PHP

WBOY
WBOYoriginal
2023-06-25 09:09:271537parcourir

Comment utiliser Sphinx pour la recherche en texte intégral dans le développement PHP

Sphinx est un moteur de recherche en texte intégral hautes performances adapté aux besoins de recherche en texte intégral dans différentes langues. Pour le développement PHP, Sphinx fournit des API et des plug-ins pour une intégration facile dans les applications PHP existantes. Dans cet article, nous expliquerons comment utiliser Sphinx pour la recherche en texte intégral.

  1. Installation de Sphinx

L'installation de Sphinx est très simple, il suffit d'exécuter quelques commandes sur votre système Linux. Voici les étapes pour installer Sphinx sur le système Ubuntu :

(1) Mettre à jour la liste des packages APT

sudo apt-get update

(2) Installer Sphinx

sudo apt-get install sphinxsearch

(3) Démarrer Sphinx Service

sudo service sphinxsearch start

  1. Configurer Sphinx

Le fichier de configuration de Sphinx est /etc/sphinxsearch/sphinx.conf. Dans ce fichier, nous pouvons définir les paramètres et index globaux de Sphinx. Voici un exemple de fichier de configuration pour indexer les données de MySQL dans Sphinx :

source src1
{
type = mysql

sql_host = localhost
sql_user = username
sql_pass = password
sql_db = dbname
sql_port = 3306 # facultatif, par défaut est 3306

sql_query =

SELECT id, title, content 
FROM article

sql_attr_uint =category_id
}

index my_index
{
source = src1
path = /var/lib/sphinxsearch/data/my_index
docinfo = extern
charset_type = ut f-8

morphology = stem_en

min_prefix_len = 3
min_infix_len = 1
}

searchd
{
Listen = 127.0.0.1:9312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/ sphinxsearch/ query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
max_matches = 1000
}

Dans ce fichier de configuration, nous définissons une source de données nommée src1 , se connecte à la base de données MySQL et définit les champs à récupérer. Ensuite, nous avons défini un index nommé my_index pour indexer la source src1 sur le chemin spécifié. Enfin, nous définissons un service searchd qui écoute sur le port 9312 et active le journal des requêtes.

  1. Connexion à Sphinx en PHP

La connexion à Sphinx en PHP est très simple. Nous pouvons utiliser l'extension PHP de Sphinx, qui fournit un ensemble de fonctions pour effectuer des recherches. Voici un exemple de code PHP pour se connecter à Sphinx pour une recherche en texte intégral :

//Connect to Sphinx
$cl = new SphinxClient();
$cl->setServer("localhost", 9312);

//Résultats de la recherche
$keywords = "Sphinx";
$result = $cl->Query($keywords, "my_index");

//Résultats de sortie
foreach ($result['matches'] as $doc => $ match) {
echo "ID du document={$doc}, poids={$match['weight']}, attr={$match'attrs'}
";
}

Dans cet exemple, nous instancions d'abord Créer un objet SphinxClient et spécifions l'hôte et le port du serveur Sphinx. Nous effectuons ensuite une recherche, en spécifiant les mots-clés de requête à rechercher et les noms d'index à rechercher. Enfin, nous parcourons les résultats et générons les ID, poids et attributs des documents correspondants.

Résumé

Sphinx est un puissant moteur de recherche en texte intégral qui peut être facilement intégré aux applications PHP. En utilisant Sphinx, nous pouvons rechercher rapidement de grandes quantités de documents texte et obtenir des résultats de recherche très efficaces et précis. Nous espérons que cet article vous a été utile et vous a permis de mieux comprendre comment utiliser Sphinx pour la recherche en texte intégral dans le développement PHP.

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