0

表:用户

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

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

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

我该如何为此编写查询?

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

4

1 回答 1

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
于 2012-07-31T19:49:07.637 回答