Re: [SQL] Weighted Searching
От | Stephan Szabo |
---|---|
Тема | Re: [SQL] Weighted Searching |
Дата | |
Msg-id | Pine.BSF.4.10.10009120936240.18608-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | Weighted Searching ("Mitch Vincent" <mitch@venux.net>) |
Список | 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 по дате отправления: