使用全文搜索命名搜索

时间:2012-07-31 10:55:07

标签: sql-server-2008 tsql full-text-search

表:用户

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

现在我想编写一个查询来获取以下输入的上述记录: george george walker george walker bush等。

即,搜索字符串中的一半单词应匹配但不匹配任何单词

如何为此编写查询?

注意:我想使用Full Text Search功能,因为此表有几百万条记录。
我怀疑是否可以SOUNDEX使用Full Text

1 个答案:

答案 0 :(得分:0)

假设您有全文索引名称列...

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