RE: Re: Matching and Scoring with multiple fields

From: "Tim Johnson" <tim(at)celestialdesign(dot)co(dot)uk>
To: "Oliver Mueschke" <o(at)mueschke(dot)de>, <pgsql-sql(at)postgresql(dot)org>
Cc: "Stephan Szabo" <sszabo(at)kick(dot)com>, <eloehr(at)austin(dot)rr(dot)com>
Subject: RE: Re: Matching and Scoring with multiple fields
Date: 2000-07-13 00:13:21
Message-ID: NBBBLHOPPPPCHCIABAFGOENLCMAA.tim@celestialdesign.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Thanks to all of you that replied. I think Oliver's idea (which is pretty
close to Stephan's) will probably do the trick I think.

I will maybe look in the future to add the ability to allow users to weight
fields with more priority. So customers could number the top five most
important fields and then pick how they feel. I still worry about the
results being skewed by extreme data in certain fields but I guess there's
no way around that.

Thanks again.

Tim Johnson,
-- http://www.theinkfactory.co.uk

-----Original Message-----
From: Oliver Mueschke [mailto:o(at)mueschke(dot)de]
Sent: 10 July 2000 21:15
To: pgsql-sql(at)postgresql(dot)org
Cc: tim(at)lincolnshirenow(dot)com
Subject: Re: [SQL] Re: Matching and Scoring with multiple fields

I'm not sure, but it seems you could calculate a column like:
SELECT a,b,c,...,
abs(<feel_a>-a)+abs(<feel_b>-b)+abs(<feel_c>-c)+... AS weight
FROM t
ORDER BY weight

This way the closest matches would come first.

On Mon, Jul 10, 2000 at 07:56:08PM +0100, Tim Johnson wrote:
> I have a problem. Ok I'll rephrase that, a challenge.
>
> I have a table like this:
>
> a,b,c,d,e,f,g,h
> ---------------
> 2,5,3,4,4,5,2,2
> 1,1,1,1,1,1,1,1
> 5,5,5,5,5,5,5,5
> 3,3,2,4,5,1,1,3
> 1,1,5,5,5,5,1,4
> 1,5,5,5,4,4,2,1
> 5,5,5,5,1,1,1,1
> 1,1,1,1,5,5,5,5
> (rows 8)
>
> a to h are of type int.
>
>
> I want to take input values which relate to this table say:
> how do you feel about a:
> how do you feel about b:
> how do you feel about c:
> ...
>
> and the answers will be 1 to 5.
>
> Now I want to take those answers for my incoming a to h and scan down the
> table pulling out the closest matches from best to worst. There will be
> about 2000 rows in the final table and I will LIMIT the rows in blocks of
10
> or so.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Gerhard Dieringer 2000-07-13 07:01:44 Antw: RE: join if there, blank if not
Previous Message Henry Lafleur 2000-07-12 18:51:24 RE: join if there, blank if not