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”——所有这些都作为全文搜索的一部分执行)。
这是个好主意吗?为什么?