Re: [SQL] Weighted Searching - Mailing list pgsql-general

From Stephan Szabo
Subject Re: [SQL] Weighted Searching
Date
Msg-id Pine.BSF.4.10.10009120936240.18608-100000@megazone23.bigpanda.com
Whole thread Raw
In response to Weighted Searching  ("Mitch Vincent" <mitch@venux.net>)
List pgsql-general
I'm not sure how fast it is, but something like this
would work, right?

WHERE
(CASE WHEN degree='MBA' THEN 10 ELSE 0 END +
CASE WHEN years_experience='5' THEN 10 ELSE 0 END _
CASE WHEN location_state='Arizona' THEN 10 ELSE 0 END)
>=20

Also, wouldn't you usually want to be searching where the
weight was given if you had the years_experience or greater?

Stephan Szabo
sszabo@bigpanda.com

On Tue, 12 Sep 2000, Mitch Vincent wrote:

> I emailed the list a while back about doing some weighted searching, asking
> if anyone had implemented any kind of weighted search in PostgreSQL.. I'm
> still wondering the same thing and if anyone has, I would greatly appreciate
> a private email, I'd like to discuss it in detail.. I have several ideas but
> most of them are pretty dirty and slow..
>
> What I need to do is allow the user to assign weights to fields and then
> specify a minimum weight which would dictate results..
>
> Example :
>
> A search on two fields, degree and years_experience, location_state.
>
> The user assigns degree a weight of 10, years_experience a weight of 10 and
> location_state a weight of 10. Then specifies the minimum weight as 20,
> meaning that any results returned would have to have at least two of the
> fields an exact match (any two that where the sum of the weight equals 20).
> This could be carried out to many, many fields and extremely high weights..
>
> The problem I'm having is figuring out a good way to assign the weights to
> individual fields and test to see if an individual field is exactly matched
> in the query (without running a single query for each field searched on.
>
> Example:
>
> The SQL query for the search above might be :
>
> SELECT * FROM people WHERE degree='MBA' and years_experience='5' and
> location_state='Arizona'
>
> I would want people that have an MBA and 5 years experience but they
> wouldn't necessarily have to be in Arizona (because our minimum weight is
> 20, only two would have to match)..
>
> Hopefully I'm not over-explaining to the point of confusion.. If anyone
> would have any ideas, please drop me an email.. Thanks!!!
>
> -Mitch
>
>
>
>
>


pgsql-general by date:

Previous
From: "Mitch Vincent"
Date:
Subject: Weighted Searching
Next
From: Barry Lind
Date:
Subject: [Fwd: problem with LIKE and '/%']