Mailinglisten-Archive |
>>schau dir mal CASE und REGEXP an.... >> >>SELECT ..., >>CASE >> WHEN text1 REGEXP suchbegriff THEN 1 >> WHEN text2 REGEXP suchbegriff THEN 2 >> WHEN text3 REGEXP suchbegriff THEN 3 >> END AS `order` >>ORDER BY `order` > > > So müsste es hinhauen - danke für den Tip! :-) allerdings würde ich das ganze über ein 'FULLTEXT SEARCH' machen mit MATCH .. AGAINST -> http://www.mysql.com/doc/en/Fulltext_Search.html SELECT ..., (MATCH ( 'suchbegriff' AGAINST (`text1`) ) * 3) + (MATCH ( 'suchbegriff' AGAINST (`text1`) ) * 2) + (MATCH ( 'suchbegriff' AGAINST (`text1`) ) * 1) AS `order` WHERE MATCH 'suchbegriff' AGAINST (`text1`,`text2`,`text3`) ORDER BY `order` DESC MATCH .. AGAINST liefert einen wert zurück der die relevanz des gseuchten wortes für diesen text wiedergibt, diese relevanz wird dann multipliziert ( text1 mit 3, text2 mit 2 ...) für die richtige sortierung, du könntest auch jeden anderen multiplikatinsfakter verwenden allerdings brauchst du dafür auch einen FULLTEXT index auf text1,text2,text3 das ganze dürfte dann wesentlich schneller sein als deine jetzige lösung -- Sebastian Mendel info at sebastianmendel.de www.sebastianmendel.de www.tekkno4u.de www.nofetish.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive