通过非索引列的文本复制加速SQL Server全文索引

时间:2010-05-27 06:17:16

标签: sql-server full-text-search fulltext-index

1)我有文本字段FirstName,LastName和City。它们是全文索引的。

2)我还有FK int字段AuthorId和EditorId,而不是全文索引。

搜索FirstName ='abc'并且AuthorId = 1将首先在整个全文索引中搜索'abc',然后缩小AuthorId = 1的结果集。

这很糟糕,因为它会浪费大量资源,因为全文搜索将在许多不适用的记录上执行。

不幸的是,据我所知,这不能被扭转(首先是AuthorId缩小,然后是全文搜索匹配的子集),因为FTS进程与SQL Server是分开的。

现在我提出的解决方案是我寻求反馈:创建另一个计算列是否有意义,该列将包含在全文搜索中,该搜索将作者识别为文本(例如AUTHORONE)。这样我就可以摆脱AuthorId限制,而是将其作为我的全文搜索的一部分(搜索'abc'将是'abc'和'AUTHORONE' - 全部作为全文搜索的一部分执行)。

这是一个好主意吗?为什么呢?

1 个答案:

答案 0 :(得分:0)

在SQL 2000和SQL 2005中,将可搜索的键嵌入到构建全文索引的列中绝对是个好主意。这是因为,SQL 2000和SQL 2005无法有效地处理Microsoft所称的mixed query scenarios

在SQL 2008中,全文完全集成到数据库中,您通常不必在数据中嵌入其他搜索键。

注意:在上面的示例中,您不必将“1”转换为单词“ONE”。 SQL FT会发现“Author1”就好了。