【问题标题】:Full-Text Index Design Considerations (SQL Server 2008)全文索引设计注意事项 (SQL Server 2008)
【发布时间】:2012-01-18 19:00:21
【问题描述】:
我的网站要求用户可以搜索多个不同的表和列。所以我正在努力使用全文搜索来实现这一点。
我想从具有更多 FTS 经验的人那里获得一些关于以下问题的意见。
虽然 FTS 允许您在一次搜索中从同一个表中搜索多个列,但我没有看到在一次搜索中从多个表中搜索多个列的选项。真的是这样吗?
如果我需要多次搜索来搜索多个表,将每个表的索引放在不同的全文目录中是否有意义?向导似乎为较大的表推荐了一个新目录,但我不知道在这种情况下“大”是什么意思。
最后,是否要对结果进行排序,以使表的一列中的匹配项排在另一列中的匹配项之前?
【问题讨论】:
标签:
sql-server
sql-server-2008
full-text-search
【解决方案1】:
1. 虽然 FTS 允许您在一次搜索中从同一个表中搜索多个列,但我没有看到搜索多个列的选项
一次搜索中来自多个表的列。这实际上是
案例?
单个表上的 FTIndex 不能包含另一个表中的列。因此,通常,您只需要编写查询,以便进行多次搜索(您在 #2 中提到了这一点)。
另一种选择是创建一个跨多个表的索引视图 (see requirements),然后在视图之上构建一个 FTIndex。我相信这是可能的,但你应该测试一下。
2.如果我需要多次搜索来搜索多个表,将每个表的索引放在不同的全文中是否有意义
目录?向导似乎为更大的推荐了一个新目录
表,但我不知道在这种情况下“大”是什么意思。
在 SQL2008 中应该没有区别,因为目录只是一个逻辑分组。但是,如果您有一个有意义的磁盘子系统,您可能会考虑将 FTIndexes 放在不同的文件组上(类似于在不同磁盘上跨文件组分区表的考虑...以分散 IO)。
3.最后,有没有人想对结果进行排序,以使表的一列中的匹配出现在另一列中的匹配之前?
我不相信这是可能的......