1

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

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

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

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

不幸的是,据我所知,由于 FTS 进程与 SQL Server 是分开的,因此无法扭转这种情况(首先由 AuthorId 缩小,然后对匹配的子集进行全文搜索)。

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

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

4

1 回答 1

0

在 SQL 2000 和 SQL 2005 中,将可搜索键嵌入到构建全文索引的列中绝对是个好主意。这是因为,SQL 2000 和 SQL 2005 不能有效地处理 Microsoft 所说的混合查询场景

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

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

于 2011-08-30T22:48:57.240 回答