2013-04-19 7 views
0
<groveling> 

Это, вероятно, что-то очень простое. Я новенькая полнотекстового индексирования и поиска, и я пытался получить эту работу в течение нескольких часов, так пожалуйста легко идти на меня :)SQL Server: полнотекстовый поиск с присоединением

</groveling> 

Скажем, у меня есть таблица людей с FirstName, фамилия, адрес, дата рождения и т.д. ...

create table mypeople 
(
    id int identity(1,1) primary key, 
    firstname varchar(100) not null, 
    lastname varchar(100) not null, 
    address varchar(100) not null 
) 

у меня есть еще одна таблица, содержащая информацию о людях, я не хочу, чтобы делать бизнес с, известных международных преступников, людей, которые frauded мою компанию перед тем и т.д ..

create table badguys 
(
    id int identity(1,1) primary key, 
    firstname varchar(100) null, 
    lastname varchar(100) null, 
    alias varchar(max) null, 
    address varchar(max) null 
) 

У меня есть полный текст в моей таблице badguy для имени, имени, псевдонима, адреса. Мне нужно посмотреть все первые имена в таблице mypeople и посмотреть, находятся ли они в таблице badguys. Я часами болтаю с разными запросами и не прихожу ни к чему, что работает для меня.

+0

почему не просто 'выбрать mypeople.id из MyPeople внутреннего соединения badguys на mypeople.firstname = badguys.firstname'? –

+0

Я хочу, чтобы иметь возможность искать по имени, фамилии и псевдонимам, и мне нужно иметь возможность искать близкие совпадения, так как b0b должен соответствовать bob или rob или robert или robbie во всех этих полях. –

+0

fulltext не поможет в все с материалом 'b0b == bob'. если вам нужно нечеткое совпадение, вам понадобятся другие инструменты, такие как soundex(). –

ответ

0

Есть способы для достижения соответствия тезауруса.
Пожалуйста, обратитесь к этой ссылке:
http://msdn.microsoft.com/en-us/library/ms142491.aspx

Чтобы найти спички с полным текстом использования индекса что-то вроде этого:

SELECT FirstName, LastName 
FROM MyPeople AS a 
WHERE NOT EXISTS(
    SELECT FirstName, LastName  
     FROM [MTPS].[dbo].[BadGuys] 
     WHERE CONTAINS((FirstName,LastName), @searchExpr) 
) 
Смежные вопросы