sql-server-2005 - 在 SQL Server 2005 中的 View 上创建全文索引

标签 sql-server-2005 full-text-search

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

我有脚本来创建下面的目标表、 View 和索引。我真的不需要下面示例中的 View ,它在我尝试隔离问题时进行了简化。

删除 View [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] 主键集群
(
[ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) 在 [主要]


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


-- 鉴于 PK 已设置,此索引可能有点过分...
在 [dbo].[ProductSearchView](Id) 上创建唯一的集群索引 PK_ProductSearchView


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

最佳答案

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

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

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

关于sql-server-2005 - 在 SQL Server 2005 中的 View 上创建全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263071/

相关文章:

c# - SMO.Restore.SqlRestore 有时会在部署的计算机上引发超时异常

sql - SQL Server 2005 中带有 "FOR XML PATH"的 XML 声明

ruby-on-rails - Rails - 太阳黑子条件模型索引

javascript - Mongoose 索引已经存在,有不同的选项

python - 如何在 python 中有效地加载大文本文件

sql-server - 全文搜索与阿拉伯语 Kaaf 字母在阿拉伯语模式下不匹配

sql - 创建索引所需的最小行数是多少?

c# - SqlBulkCopy 拒绝将 String.Empty 转换为 INT NULL

database - 将多条记录合并到表中的一行中

mysql - 在 mysql innodb 全文搜索上添加 "dot/period"字符作为可搜索词