【发布时间】:2009-11-26 02:46:33
【问题描述】:
我有一个我认为是非常基本的场景,但我读到的内容听起来好像使用 SQL Server 全文目录和索引并不容易。
我有 2 列,名字和姓氏。我想支持对它们进行全文搜索,这样如果有人键入“John Smith”,则 both 匹配的人首先出现。
虽然跨多列创建索引很容易,搜索多列也很容易,但评分并不能反映多列。
SELECT [Key], Rank
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
- 如果 CLAUSE_HERE 是“john smith”,我不会得到任何结果,因为这两个字段中都不存在该短语。
- 如果是“john OR smith”,我会在任一字段中获取具有任一名称的所有用户,按无用的顺序排序。
- 如果是“john AND smith”,我不会得到任何结果,因为两个字段都不包含这两个词。
似乎唯一的解决方案是自动生成一个查询,该查询在每个字段上运行containstable,进行一些数学运算,对分数求和等。听起来对吗?有没有更简单的方法?我的实际查询有更多字段 - 这是一个简化的示例。
【问题讨论】:
标签: sql-server full-text-search