Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Relevanz bei MySQL-Volltextsuchen über mehrere Spalten hinweg priorisieren?
Priorisierung der Relevanz in der MySQL-Volltextsuche mit mehreren Spalten
In MySQL erleichtert die Funktion MATCH() AGAINST() die Volltextsuche über mehrere Spalten hinweg. Standardmäßig wird die Suchrelevanz durch das kombinierte Vorkommen übereinstimmender Begriffe in allen angegebenen Spalten bestimmt. Es kann jedoch vorkommen, dass Sie die Relevanz anhand bestimmter Spalten priorisieren müssen.
Relevanz nach Spalte
Um dies zu erreichen, können Sie mehrere Relevanzspalten einführen, eine für jede Spalte, wie Sie erwähnt haben. Während dieser Ansatz eine genaue Priorisierung gewährleistet, impliziert er auch redundante Suchvorgänge, die sich auf die Leistung auswirken.
Relevanzpriorisierung optimieren
Eine alternative Methode, die Leistung und Relevanzpriorisierung in Einklang bringt, besteht darin, die anzupassen Formel zur Berechnung der Relevanz. Hier ist eine modifizierte Abfrage, die einen Gewichtungskoeffizienten für die Kopfspalte enthält:
SELECT * , MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') AS title_weight FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY (title_weight + relevance) DESC
Diese Abfrage weist dem Relevanzwert der Kopfspalte eine höhere Gewichtung zu. Indem Sie die Gewichtung entsprechend anpassen, können Sie die Relevanz anhand bestimmter Spalten priorisieren.
Bonus: Vorkommen von Wörtern zählen
Um das Vorkommen übereinstimmender Begriffe in jeder Spalte zu zählen, können Sie kann das BOOLEAN MODE-Flag in MATCH() verwenden:
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance, MATCH (head) AGAINST ('some words' IN BOOLEAN MODE) AS title_count FROM pages WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) ORDER BY title_count DESC, relevance DESC
Die Spalte title_count gibt an, wie oft die angegebenen Begriffe vorkommen in der Kopfspalte. Diese Informationen helfen Ihnen, Ihre Suchergebnisse weiter zu verfeinern.
Hinweis: Dieser Ansatz ist für MySQL-Versionen 8.0 und höher geeignet. Bei älteren Versionen müssen Sie möglicherweise alternative Methoden zur Priorisierung der Relevanz und zum Zählen des Vorkommens von Begriffen erkunden.
Das obige ist der detaillierte Inhalt vonWie kann ich die Relevanz bei MySQL-Volltextsuchen über mehrere Spalten hinweg priorisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!