Maison >base de données >tutoriel mysql >Comment puis-je optimiser la pertinence de la recherche en texte intégral MySQL en donnant la priorité à des colonnes spécifiques ?
Optimisation des requêtes MySQL pour la recherche en texte intégral avec pertinence et priorisation des colonnes
Lors de l'exécution de recherches en texte intégral dans plusieurs colonnes à l'aide de MATCH de MySQL( ) et AGAINST(), les utilisateurs sont souvent confrontés au besoin de trier les résultats par pertinence tout en priorisant certaines colonnes. Bien que le calcul de la pertinence en fonction du nombre de mots soit simple, prioriser la pertinence des colonnes peut s'avérer difficile.
Pour résoudre ce problème, une requête modifiée intégrant des mesures de pertinence spécifiques aux colonnes peut être utilisée. Au lieu de créer des colonnes de pertinence supplémentaires, la requête suivante introduit un nouveau facteur de pondération :
SELECT pages.*, MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') * 2 AS title_relevance FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY title_relevance DESC, relevance DESC -- Alternatively: ORDER BY 0.5 * title_relevance + relevance DESC
Dans cette requête modifiée, la pertinence des mots trouvés dans la colonne d'en-tête est doublée, priorisant ainsi efficacement la colonne dans la pertinence calcul. Alternativement, un multiplicateur de pondération personnalisé peut être appliqué pour affiner davantage la priorisation.
Pour des options de priorisation et de pondération plus avancées, envisagez d'explorer des moteurs de base de données alternatifs tels que Postgres, qui offre une personnalisation approfondie des opérateurs de pondération et des algorithmes de classement. .
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!