phpbar.de logo

Mailinglisten-Archive

AW: Suche ueber mehrere Textfelder

AW: Suche ueber mehrere Textfelder

Cybot 4t2.com-mysql at tekkno4u.de
Mon Mar 3 09:12:09 CET 2003


>>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