Sql server 具有ContainsTable和布尔逻辑且具有全文索引的多列
我有一个我认为非常基本的场景,但我读到的内容让人觉得使用SQL Server全文目录和索引并不容易 我有两列,名字和姓氏。我想支持对其进行全文搜索,这样,如果有人在上键入“John Smith”并与之匹配的人,则会同时出现第一个和最后一个 尽管跨多个列创建索引很容易,搜索多个列也很容易,但评分并不反映多个列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>') 选择
SELECT [Key], Rank
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
选择[键],排名
来自CONTAINSTABLE([User],(FirstName,LastName),“”)
containstable
,进行一些计算,对分数进行求和,等等。这听起来正确吗?有没有更简单的办法?我的实际查询有很多字段-这是一个简化的示例。创建一个将您感兴趣的搜索字段(以对您的搜索格式有意义的方式)和全文索引混在一起的索引
据我所知,如果由于您在问题中描述的行为,您希望以这种方式全文显示,这是唯一的解决方法。您需要对其进行测试,但我想知道您是否可以使用isbaout()函数对每个关键字应用权重。您的搜索子句可能类似于:
ISABOUT(john weight(0.2), smith weight(0.8))
这主意不错,但不管用。评分的工作方式似乎不是跨列求和。所以,在我的测试中,“约翰·史密斯”和“约翰·琼斯”的分数完全相同。您使用的是哪个版本的SQL Server?你有样本/测试脚本吗?完全成功!!为什么全文不能自动做到这一点?我认为在多个列上应用全文将像这样开箱即用。我想不是。