Home > Archive > Microsoft SQL Server forum > July 2005 > Need help with SQL query. Keyword matching.









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Need help with SQL query. Keyword matching.
david@iaction.com

2005-07-27, 11:37 am

Hi all,

I have two tables:

workgroups (wg_id, wg_name)
workgroups_keywords (wgk_wg_id, wgk_keyword)

Each workgroup has an associated list of one or more keywords.

What I want do to at first was given a particular list of keywords
bring back a list of workgroups that have at least one matching keyword
associated with it.

I have the following query:


select distinct(wg_id), wg_name
from workgroups, workgroups_keywords
where
wgk_keyword in (#QuotedValueList(Ke
ywords.wgk_keyword)#)
and
wg_id = wgk_wg_id
order by wg_name



This works great.

However, is there a way in a single query to order the returned rows by
the number of keywords that are found to be matching (in other words an
order by relevancy, the more keywords that match the more relevant the
returned row)?

Thanks in advance.

David

Erland Sommarskog

2005-07-27, 11:37 am

(david@iaction.com) writes:
> I have two tables:
>
> workgroups (wg_id, wg_name)
> workgroups_keywords (wgk_wg_id, wgk_keyword)
>
> Each workgroup has an associated list of one or more keywords.
>
> What I want do to at first was given a particular list of keywords
> bring back a list of workgroups that have at least one matching keyword
> associated with it.
>
> I have the following query:
>
> select distinct(wg_id), wg_name
> from workgroups, workgroups_keywords
> where
> wgk_keyword in (#QuotedValueList(Ke
ywords.wgk_keyword)#)
> and
> wg_id = wgk_wg_id
> order by wg_name


This syntax looks funny to me. Are you really using Microsoft SQL Server?

> This works great.
>
> However, is there a way in a single query to order the returned rows by
> the number of keywords that are found to be matching (in other words an
> order by relevancy, the more keywords that match the more relevant the
> returned row)?


That sounds doable. It would be something like

SELECT wg_nmae, COUNT(*)
FROM ...
GROUP BY wg_name
ORDER BY 2

But since I don't know exactly how this Keywords.wgk_keyword works,
and I'm uncertain that you are using MS SQL Server, I refrain from a
complete answer.

--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp
Hugo Kornelis

2005-07-27, 1:28 pm

On 27 Jul 2005 08:50:27 -0700, david@iaction.com wrote:

>Hi all,
>
>I have two tables:

(snip)
>Thanks in advance.
>
>David


Hi David,

You posted the same question in microsoft.public.sqlserver.programming,
where it was answered. Please don't post the same question to multiple
groups. Posting to one group is the preferred method. And if you really
feel that the question belongs in two groups, then please usse your
software's crossposting facility to get the same message in both groups,
so that replies in one group will also be visible in the other. That
saves other people from spending time and energy to answer a question
that is already answered elsewhere.

Best, Hugo
--

(Remove _NO_ and _SPAM_ to get my e-mail address)
Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com