Re: scoring/sorting db search results based on score

From: Date: Thu, 17 Jul 2003 14:47:34 +0000
Subject: Re: scoring/sorting db search results based on score
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-155626@lists.php.net to get a copy of this message
> Try > SELECT ...., (((keywords LIKE '%$search%') * 5) + ((title LIKE > '%$search%') * 3) + (description LIKE '%$search%')) score FROM ..... > ORDER BY score DESC PostgreSQL cannot type cast the Boolean type so you have to use a case statement, also changing like to ilike will get results regardless of case. SELECT ...., ((CASE WHEN (keywords ILIKE '%$search%') THEN 5 ELSE 0 END) + (CASE WHEN (title ILIKE '%$search%') THEN 3 ELSE 0 END) + (CASE WHEN (description ILIKE '%$search%') THEN 1 ELSE 0 END)) AS score FROM .... ORDER BY score DESC > > Dave [Hawk-Systems] wrote: >> looking for code snippets or links to examples of the following; >> >> - Have a database with multiple fields that will be searched against >> (happens to >> be PostgreSQL in this instance, but we can migrate any MySQL based >> examples/code) >> - We wish to score search results - ie: a match in "keywords" is worth 5 >> points, >> "title" worth 3, and "description" worth 1, perhaps even so far as >> multiple >> matches producing multiples of the point value(though that can be a >> later >> consideration) >> - Once we get the results, we would want to display in the order of the >> scoring, >> most points first etc... >> >> Obviously there are convoluted ways to accomplish, but I am looking to >> maximize >> the database performance, limit the number of recursive searches, and >> use the >> database/PHP each handle their portion of the search/score/ranking based >> on >> their strengths and use of system resources. >> >> appreciate any feedback >> >> Dave >> >> >> > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Thanks, Dean E. Weimer http://www.dwiemer.org/ dweimer@dweimer.org

« previous php.general (#155626) next »