当前位置:  开发笔记 > 前端 > 正文

在SQL Server中如何使用TYPE COLUMN选项创建全文索引

如何解决《在SQLServer中如何使用TYPECOLUMN选项创建全文索引》经验,为你挑选了1个好方法。

我有一个表定义如下

CREATE TABLE [dbo].[Dialogs](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DiscussionID] [int] NOT NULL,
    [ApprovedByUserID] [int] NULL,
    [AddedByUserID] [int] NULL,
    [Text] [nvarchar](max) NULL,
    [ApprovalStatus] [int] NULL,
    [ApprovedOn] [datetime] NULL,
    [AddedOn] [datetime] NOT NULL,
 CONSTRAINT [PK_dbo.Dialogs] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Text列包含用户输入的html.我想创建的全文索引Text列,我还需要支持HTML过滤器,这样,当任何用户类型

,

或任何其他HTML标记则不会返回任何结果.

要创建索引我在下面使用 SQL

CREATE FULLTEXT INDEX ON [Dialogs]
 ( 
  [Text] TYPE COLUMN '.html'
 ) 
  KEY INDEX [PK_dbo.Dialogs]
      ON AOPRDefault; 

SQL Server抛出错误

'.html'附近的语法不正确.

任何人都可以举例说明如何TYPE COLUMN在创建全文索引时指定选项.



1> GarethD..:

首先,问题是你应该引用一个你'.html'不是文字的列,所以你可能会有这样的东西:

-- ADD COMPUTED COLUMN TO STORE FILE TYPE
ALTER TABLE dbo.Dialogs ADD FileExtension AS '.html'; 

CREATE FULLTEXT INDEX ON dbo.Dialogs ([Text] TYPE COLUMN FileExtension)
    KEY INDEX [PK_dbo.Dialogs] ON AOPRDefault;

但是TYPE COLUMN根据文件,你误解了财产的目的:

TYPE COLUMN type_column_name

指定表列的名称type_column_name,用于保存varbinary(max)或image文档的文档类型.此列称为类型列,包含用户提供的文件扩展名(.doc,.pdf,.xls等).type列必须是char,nchar,varchar或nvarchar类型.

仅当column_name指定varbinary(max)或image列时才指定TYPE COLUMN type_column_name,其中数据存储为二进制数据; 否则,SQL Server会返回错误.

注意

在索引时,全文引擎使用每个表行的类型列中的缩写来标识要在column_name中用于文档的全文搜索过滤器.过滤器将文档作为二进制流加载,删除格式信息,并将文档中的文本发送到分词器组件.有关更多信息,请参阅配置和管理搜索过滤器

由于索引位于文本列上,因此不适用,并且create index语句将返回错误.即使你将html文档存储为二进制数据,它仍然无法按预期工作,你所追求的是html解析,这是一个与全文索引不同的问题.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有