Да, это возможно. SQL Server (2008 и выше) имеет два пространственных типа: геометрию и географию.
Ваша модель данных может содержать две таблицы, одну с геометрией и одну с терминами / ключевыми словами на регион.
Например:
create table a(id int, geo geometry);
create table b(a_id int, term nvarchar(50));
-- geometry with id 1
insert into a values(1, geometry::STGeomFromText('polygon((0 0,0 4,4 4,4 0,0 0))', 0));
-- keywords for geometry with id 1
insert into b values(1, 'term 1');
insert into b values(1, 'term 2');
insert into b values(1, 'term 2'); -- twice this term, on purpose
-- geometry with id 2
insert into a values(2, geometry::STGeomFromText('polygon((10 0,10 4,14 4,14 0,10 0))', 0));
-- keywords for geometry with id 2
insert into b values(2, 'term 3');
insert into b values(2, 'term 4');
insert into b values(2, 'term 1'); -- shared between 1 and 2
И затем вы создаете пространственный запрос, например, выглядящий так:
select a.id,b.term,COUNT(1) as frequency from a
join b on a.id=b.a_id
where a.geo.STIntersects(geometry::STGeomFromText('polygon((2 2,2 12,12 12,12 2,2 2))', 0)) = 1
group by a.id,b.term
order by frequency desc
Это приведет к:
1 'term 2' 2
2 'term 3' 1
2 'term 4' 1
1 'term 1' 1
2 'term 1' 1
О чем и просили.