我认为这是一个非常基本的场景,但我读到的内容使得使用SQL Server全文目录和索引并不容易。
我有2列,名字和姓氏。我想支持对他们进行全文搜索,这样如果有人输入“约翰史密斯”,那么两者匹配的人首先出现,最后出现。
尽管跨多个列创建索引很容易,并且很容易搜索多个列,但评分并不能反映多个列。
SELECT [Key], Rank
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
似乎唯一的解决方案是自动生成在每个字段上运行containstable
的查询,进行一些数学运算,对分数求和等等。听起来是否合适?有更简单的方法吗?我的实际查询有很多字段 - 这是一个简化的例子。
答案 0 :(得分:11)
制作一个computed column,将您感兴趣搜索的字段(以对您的搜索格式有意义的方式)和全文索引组合在一起。
据我所知,由于你在问题中描述的行为,如果你想以这种方式全文,这是唯一的解决方法。
答案 1 :(得分:0)
您需要对其进行测试,但我想知道您是否可以使用ISABOUT()函数对每个关键字应用权重。您的搜索条款可能类似于:
ISABOUT(john weight(0.2), smith weight(0.8))