SPHINX PHP est un moteur de recherche en texte intégral efficace qui peut aider les développeurs à réaliser de puissantes fonctions de recherche. Pendant le processus de développement, il est souvent nécessaire de effectuer des recherches conjointes dans plusieurs tables et de combiner les résultats de recherche à afficher. Cet article expliquera comment implémenter cette fonctionnalité à l'aide de SPHINX PHP et fournira des exemples de code pertinents.
Tout d'abord, nous devons installer Sphinx PHP. En utilisant le compositeur comme outil de gestion des dépendances, vous pouvez ajouter les dépendances suivantes dans le fichier composer.json de votre projet:
{ "exiger": { "sphinxsearch / sphinx-php": "^ 2.2" } }
Une fois l'installation terminée, exécutez la commande d'installation du compositeur pour charger la dépendance.
Afin d'effectuer une recherche conjointe multi-table, nous devons d'abord configurer l'index de Sphinx. Supposons que nous ayons deux tableaux: l'un est le tableau des utilisateurs , qui contient le nom et l'âge de l'utilisateur; L'autre est le tableau des produits , qui contient le nom et la description du produit. Nous voulons pouvoir rechercher dans ces deux tables et fusionner les résultats.
Dans le fichier de configuration Sphinx, définissez d'abord deux index, correspondant à la table des utilisateurs et au tableau des produits respectivement. La configuration de l'exemple est la suivante:
index users_index { Source = utilisateurs chemin = / var / data / utilisateurs ... } <p>index products_index {<br> Source = produits<br> chemin = / var / data / produits<br> ...<br> }<br>
Ensuite, nous définissons un index fusionné dans la configuration de la recherche :
index my_index { type = distribué local = users_index local = products_index }
De cette façon, nous créons un index conjoint appelé my_index , qui contient deux index locaux: users_index et products_index .
Ensuite, nous pouvons effectuer une recherche fédérée via Sphinx PHP. Tout d'abord, vous devez créer une instance client Sphinx et vous connecter au serveur Sphinx:
require_once 'vendeur / autoload.php'; <p>Utilisez sphinx \ sphinxClient;</p> <p>// Créer une instance client sphinx<br> $ client = new sphinxClient ();</p> <p>// Connectez-vous au serveur Sphinx<br> $ client-> setServer ('127.0.0.1', 9312);<br>
Nous pouvons ensuite définir les options de requête et effectuer l'opération de recherche:
// SET des options de requête $ client-> setMatchMode (sphinxclient :: sph_match_all); // correspond complètement à $ client-> setlimits (0, 10); // définir le nombre de résultats renvoyés<p> // effectuer des opérations de recherche<br> $ result = $ client-> query ('keyword', 'my_index');</p> <p>// traite les résultats de la recherche<br> if ($ result! == false) {<br> if ($ result ['total']> 0) {<br> foreach ($ result ['correspond'] comme $ correspond) {<br> echo $ correspond ['id']. ':'. $ correspond ['poids']. "\ n";<br> }<br> } autre {<br> Echo «Aucun match n'a été trouvé. ';;<br> }<br> } autre {<br> Echo 'La recherche a échoué. ';;<br> }<br>
L'exemple ci-dessus montre comment implémenter la recherche conjointe multi-table et la fusion des résultats via Sphinx PHP. En plaçant l'index rationnellement et en utilisant les capacités de recherche fournies par SPHINX PHP, les développeurs peuvent facilement effectuer des requêtes conjointes dans plusieurs tables de données et optimiser le retour des résultats de recherche. J'espère que cet article sera utile à votre travail de développement.