【问题标题】:name search with Full Text search使用全文搜索进行名称搜索
【发布时间】:2012-07-29 03:00:14
【问题描述】:

表:用户

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

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

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

如何为此编写查询?

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

【问题讨论】:

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


    【解决方案1】:

    假设您已对您的 Name 列进行全文索引...

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-02
      • 2010-11-11
      • 2010-11-25
      • 2017-06-04
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多