2012-07-31 4 views
0

Tableau: Utilisateurrecherche de nom avec recherche plein texte

...|Name     |...|.. 
__________________________________ 
...|george walker   |...|.. 
...|...     |...|.. 

Maintenant, je veux écrire une requête pour obtenir le dossier ci-dessus pour les entrées suivantes: george george walker george walker bush etc.

ie. , la moitié des mots dans la chaîne de recherche doit correspondre, mais pas n'importe quel mot

Comment puis-je écrire une requête pour cela?

Remarque: Je souhaite utiliser la fonctionnalité Full Text Search car cette table contient quelques millions d'enregistrements.
je doute si je pouvais utiliser SOUNDEX avec Full Text

Répondre

0

En supposant que vous avez le texte intégral indexé votre colonne Nom ...

declare @search varchar(1000), @searchquery varchar(1000) 

select @search = 'george walker bush' -- your search terms here. 

select @search = ltrim(rtrim(@search)) 
select @searchquery = 'ISABOUT (' 
    + replace(@search, ' ', ' WEIGHT (0.4), ') 
    + ' WEIGHT (0.4))' 

select * from [User] 
inner join 
    Containstable(
     [User], 
     Name, 
     @searchquery 
     ) as keys 
     on keys.[key] = [user].id 
where rank>50