Sql server 具有ContainsTable和布尔逻辑且具有全文索引的多列

Sql server 具有ContainsTable和布尔逻辑且具有全文索引的多列,sql-server,full-text-search,Sql Server,Full Text Search,我有一个我认为非常基本的场景,但我读到的内容让人觉得使用SQL Server全文目录和索引并不容易 我有两列,名字和姓氏。我想支持对其进行全文搜索,这样,如果有人在上键入“John Smith”并与之匹配的人,则会同时出现第一个和最后一个 尽管跨多个列创建索引很容易,搜索多个列也很容易,但评分并不反映多个列 SELECT [Key], Rank FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>') 选择

我有一个我认为非常基本的场景,但我读到的内容让人觉得使用SQL Server全文目录和索引并不容易

我有两列,名字和姓氏。我想支持对其进行全文搜索,这样,如果有人在上键入“John Smith”并与之匹配的人,则会同时出现第一个和最后一个

尽管跨多个列创建索引很容易,搜索多个列也很容易,但评分并不反映多个列

SELECT [Key], Rank 
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
选择[键],排名
来自CONTAINSTABLE([User],(FirstName,LastName),“”)
  • 如果这里的子句_是“john smith”,我就得不到任何结果,因为这两个字段中都不存在该短语
  • 如果是“john或smith”,我会让所有用户在任一字段中使用任一名称,并按无帮助的顺序进行排序
  • 如果是“john AND smith”,我不会得到任何结果,因为两个字段都不包含这两个单词
  • 似乎唯一的解决方案是自动生成一个查询,在每个字段上运行
    containstable
    ,进行一些计算,对分数进行求和,等等。这听起来正确吗?有没有更简单的办法?我的实际查询有很多字段-这是一个简化的示例。

    创建一个将您感兴趣的搜索字段(以对您的搜索格式有意义的方式)和全文索引混在一起的索引


    据我所知,如果由于您在问题中描述的行为,您希望以这种方式全文显示,这是唯一的解决方法。

    您需要对其进行测试,但我想知道您是否可以使用isbaout()函数对每个关键字应用权重。您的搜索子句可能类似于:

    ISABOUT(john weight(0.2), smith weight(0.8))
    

    这主意不错,但不管用。评分的工作方式似乎不是跨列求和。所以,在我的测试中,“约翰·史密斯”和“约翰·琼斯”的分数完全相同。您使用的是哪个版本的SQL Server?你有样本/测试脚本吗?完全成功!!为什么全文不能自动做到这一点?我认为在多个列上应用全文将像这样开箱即用。我想不是。