包含ContainsTable的多列和具有全文索引的布尔逻辑

Tom*_*nza 10 sql-server full-text-search

我认为这是一个非常基本的场景,但我读过的内容听起来好像使用SQL Server全文目录和索引并不容易.

我有2列,名字和姓氏.我想支持他们的全文搜索,例如,如果有人类型的"约翰·史密斯"的人对比赛双方的第一和最后一个上来第一.

虽然可以轻松地跨多个列创建索引,并且易于搜索多个列,但评分不会反映多个列.

SELECT [Key], Rank 
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
Run Code Online (Sandbox Code Playgroud)
  1. 如果CLAUSE_HERE是"john smith",我没有得到任何结果,因为该短语在任一字段中都不存在.
  2. 如果它是"john OR smith",我会在任一字段中为所有用户提供任一名称,并按无助的顺序排序.
  3. 如果它是"john AND smith"我没有得到任何结果,因为这两个字段都不包含两个单词.

似乎唯一的解决方案是自动生成containstable在每个字段上运行的查询,进行一些数学运算,总结分数等.这听起来是否合适?有更简单的方法吗?我的实际查询有更多的字段 - 这是一个简化的例子.

Don*_*nie 12

创建一个计算列,将您感兴趣搜索的字段(以对搜索格式有意义的方式)和全文索引组合在一起.

据我所知,由于你在问题中描述的行为,如果你想以这种方式全文,这是唯一的解决方法.