SQL Server 2008在包含复合主键的表上进行全文搜索

我试图在SQL Server 2008上进行全文搜索,但是我试图索引的表是一个包含复合主键的表,如下所示:

EXEC sp_fulltext_catalog 'My_Catalog', 'create'
EXEC sp_fulltext_table 'Message', 'create', 'My_Catalog', 'PK__MESSAGES__C87C0C9C0EC32C7A' // PK__MESSAGES__C87C0C9C1EC32C6A is a composite key

并且出现以下错误:“'PK_MESSAGES__C87C0C9C1EC32C6A'不是强制执行全文搜索关键字的有效索引。全文搜索关键字必须是唯一的,不可为空的单列索引,它不处于脱机状态,是未定义在非确定性或不确定的非计算列上,没有过滤器,最大大小为900字节,为全文键选择另一个索引。

这意味着我不能在具有复合主键的表中使用全文搜索? 或者我做错了什么?

提前致谢


我认为错误信息很清楚,不是吗?

PK_MESSAGES_C87C0C9C1EC32C6A不是强制执行全文搜索关键字的有效索引,全文搜索关键字必须是唯一的,不可空的单列索引 ,它不脱机,未定义在非确定性或不确定性未经计算的列,没有过滤器,最大大小为900字节,为全文密钥选择另一个索引。“

如果您的索引不是唯一的,不是非空值,也不是单列,它不能用于全文索引。

这意味着我不能在具有复合主键的表中使用全文搜索? 或者我做错了什么?

不,如错误所述 - 这种索引不起作用。 期。 没有办法绕过它。

正如Remus指出的那样 - 它从未说过它必须成为主要关键指标! 如果表格上还有其他不可空的且唯一的字段,则可以在该字段上使用唯一的索引。 你甚至可以简单地在你的表中添加一个INT IDENTITY(1,1)字段,并在该字段上放置一个UNIQUE INDEX ,你应该很好。


全文搜索键必须是唯一的,不可空的单列索引,该索引不脱机,未在非确定性或不精确的非计算列上定义,没有过滤器,最大大小为900字节。

请注意,它不一定是主键(即表中的主键约束)。 不可空的单列上的任何唯一索引都可以工作。 如果您没有这样的列,请在表中添加标识列并为其添加索引,然后将此索引用于全文目录。

链接地址: http://www.djcxy.com/p/66849.html

上一篇: SQL Server 2008 Full text search on a table with a composite primary key

下一篇: Full text search on calculated columns