我有一个非常基本的场景,但我所读到的内容听起来使用 SQL Server 全文目录和索引并不容易。
我有两列,名字和姓氏。我想支持对他们的全文搜索,这样如果有人输入“John Smith”,则匹配的人both第一个和最后一个首先出现。
虽然创建跨多列的索引很容易,也很容易搜索多列,但评分并不能反映多列。
SELECT [Key], Rank
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
- 如果 CLAUSE_HERE 是“john smith”,我不会得到任何结果,因为该短语在两个字段中都不存在。
- 如果是“john OR smith”,我会得到任一字段中具有任一名称的所有用户,并按无用的顺序排序。
- 如果是“john AND smith”,我不会得到任何结果,因为两个字段都不包含这两个单词。
似乎唯一的解决方案是自动生成一个运行的查询containstable
在每个领域,做一些数学计算,将分数相加,等等。这听起来对吗?有更简单的方法吗?我的实际查询有更多字段 - 这是一个简化的示例。
Make a 计算列它将您有兴趣搜索的字段混合在一起(以对您的搜索格式有意义的方式),并对其进行全文索引。
据我所知,如果由于您在问题中描述的行为而想以这种方式进行全文,这是唯一的解决方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)