Recherche en texte intégral MySQL : améliorer la pertinence et la priorisation des colonnes
La recherche de termes spécifiques dans plusieurs colonnes d'une base de données est une tâche courante. MySQL fournit les fonctions MATCH() et AGAINST() pour effectuer des recherches en texte intégral, permettant aux utilisateurs de spécifier des termes de recherche et des modes de recherche.
Cependant, lorsqu'il s'agit de plusieurs colonnes et que l'on donne la priorité à la pertinence de la recherche, des considérations supplémentaires surviennent. Pour classer les résultats par pertinence, une simple requête telle que SELECT * FROM pages WHERE MATCH(head, body) AGAINST('somewords' IN BOOLEAN MODE) peut être utilisée.
Pour hiérarchiser la pertinence en fonction de colonnes spécifiques, telles que comme colonne de tête, une approche alternative est nécessaire. En créant une colonne supplémentaire pour stocker le score de pertinence de la colonne d'en-tête, les utilisateurs peuvent bénéficier de plus de flexibilité dans l'ordre et la priorisation des résultats. Cette approche a cependant des implications en termes de performances en raison de l'opération de recherche supplémentaire sur la même table.
Une solution alternative consiste à utiliser la colonne de pertinence supplémentaire et à la combiner avec le score de pertinence de la recherche générale en texte intégral. Ceci peut être réalisé en utilisant une requête telle que :
SELECT pages.*, MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') AS title_relevance FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY title_relevance DESC, relevance DESC
Cette requête attribue une pertinence plus élevée aux résultats où les termes de recherche apparaissent dans la colonne d'en-tête tout en conservant la pertinence globale de la recherche.
De plus, en utilisant les moteurs de base de données comme PostgreSQL, qui propose des pondérations d'opérateur et des mécanismes de classement configurables, peuvent fournir des options plus avancées pour la hiérarchisation et la notation de la pertinence.
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!