Im Moment habe ich eine Suche, die wie folgt aussieht:Wie kann ich meine LIKE mit JOIN-Suche in MySQL verbessern?
SELECT s.ID
FROM Shoe s
INNER JOIN Account a
ON s.UserID = a.ID
WHERE s.Publish='1' AND
(s.Brand LIKE '%$Search%'
OR s.Name LIKE '%$Search%'
OR s.PrimaryColor LIKE '%$Search%'
OR a.User LIKE '%$Search%')
ORDER BY s.ID DESC
LIMIT $offset, $rowsPerPage"
Dies funktioniert gut, wenn ich eine Suche wie „Blue“ oder „Nikes“ zu tun, aber wenn ich eine Suche wie „Blue Nikes“ nichts kehrt zurück. Sollte ich FULLTEXT
verwenden? Wie kann ich das verbessern? Ich möchte in der Lage sein, alle Spalten zu durchsuchen, die sich auf die Suchvariable beziehen können.
Ja, Sie sollten die Volltextsuchfunktionen von MySQL oder einen externen Suchindex verwenden. –
Die Verwendung von Platzhalterzeichen auf der linken Seite des LIKE verhindert, dass MySQL den Index verwendet. Abhängig von Ihren Bedürfnissen können Sie sich auch etwas wie solr ansehen. –
@SeanBright Ich habe versucht, Match Against mit Volltext zu verwenden und habe keine Ergebnisse erhalten. Ich suche weiter und stolperte darüber - http://stackoverflow.com/questions/5925369/mysql-join-and-match-against-search-fail scheint, dass es wegen "stop" Wörtern nicht funktionieren wird. Ich bin nicht zu weit fortgeschritten auf mysql, also vergib mir, wenn ich verloren bin. – SReca