7

我在 SQL Server 2005 中的视图上创建全文索引时遇到问题。查看文档我没有发现问题。我收到的错误消息是:“'Id' 不是强制执行全文搜索键的有效索引。全文搜索键必须是唯一的、不可为空的、非脱机的单列索引,是未在非确定性或不精确的非持久计算列上定义,最大大小为 900 字节。为全文键选择另一个索引。我已经能够验证错误字符串中的每个要求,除了“离线”要求,我真的不知道这意味着什么。我很确定它没有离线。

我有在下面创建目标表、视图和索引的脚本。我真的不需要下面示例中的视图,因为我试图隔离问题,所以它被简化了。

删除视图 [dbo].[ProductSearchView]
删除表 [dbo].[Product2]
去


设置 NUMERIC_ROUNDABORT 关闭;
设置 ANSI_PADDING、ANSI_WARNINGS、CONCAT_NULL_YIELDS_NULL、ARITHABORT、
    QUOTED_IDENTIFIER,ANSI_NULLS ON;
去

创建表 [dbo].[Product2](
    [Id] [bigint] 非空,
    [描述] [nvarchar](max) NULL,
    约束 [PK_Product2] 主键集群
    (
        [编号] ASC
    )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) 开 [主要]
去

使用 SCHEMABINDING 创建视图 [dbo].[ProductSearchView]
作为
选择 P.Id 作为 ID,  
         P.Description AS 字段
FROM [dbo].Product2 AS P
去

- 鉴于设置了 PK,此索引可能会过大...
在 [dbo].[ProductSearchView](Id) 上创建唯一的聚集索引 PK_ProductSearchView
去

-- 这是失败的命令
在 [dbo].[ProductSearchView](Id, Field) 上创建全文索引
关键索引 ID
使用 CHANGE_TRACKING AUTO 的全文;
去
4

1 回答 1

14

创建全文索引时需要指定索引的名称而不是列名:

CREATE FULLTEXT INDEX ON [dbo].[ProductSearchView](Id, Field)
KEY INDEX PK_ProductSearchView
ON FullText WITH CHANGE_TRACKING AUTO;
GO

这将纠正您遇到的错误,但它会给您另一个错误,因为您试图在文本搜索中包含基于非字符的列。您可能希望选择另一个索引字符列在您的全文目录中使用。

于 2008-11-05T20:06:28.557 回答