语法
[Directory(directory)]
[IndexOnly] –Optional
[ForceCollectCount(count)] -Optional
[DBTableName(table name)] –Optional
[DBAdapter(adapter name)]
[DBConnect(connection string)]
CREATE TABLE
table_name
(
{ < column_deFinition >
| column_name AS computed_column_expression
| < table_constraint > } [ , ...n ]
)
属性
[Directory(directory)]
全文索引将被建立在这个地址下。
[IndexOnly] –Optional
如果设置为仅仅索引,在执行插入,修改和删除语句时只修改索引,而不修改数据本身。这个设置在Rebuild 或者数据库驱动索引时有用。
[ForceCollectCount(count)] –Optional
强制回收数据的记录数,可选属性。
当批量插入时,Hubble.net并不会立即更新索引,而是要到插入数量超过ForceCollectionCount时才更新索引,这样做是为了尽可能提高索引的效率。ForecCollectionCount的默认值为5000. 可以修改这个值为任意正整数。
[DBTableName(table name)] –Optional
由于Hubble.net全文索引是和数据库关联的,Hubble.net负责索引,数据库负责存储。如果希望Hubble.net中的表名和数据库的表名不一样,可以通过这个属性来设置。默认情况下,数据库表名和Hubble.net的表名相同。
[DBAdapter(adapter name)]
在 这里指定采用哪种数据库适配器。Hubble.net 目前默认提供MS sqlSERVER 2005/2008 的数据库适配器。用户可以通过实现 IDBAdapter 接口,并通过SP_AddExternalReference 系统存储过程将自己编写的数据库适配器安装到Hubble.net中。
[DBConnect(connection string)]
连接字符串,必选属性
数据类型
目前支持的数据类型有
Int,tinyint,SmallInt,BigInt,Float,DateTime,SmallDateTime,Date,NVarchar,Varchar,NChar,Char
其中
datetime 的范围为 .net 中 datetime 数据类型的时间范围,精度为毫秒
smalldatetime 的范围是 1980年1月1日 0:0:0 - 2047年12月31日 23:59:59,精度为秒
date 的范围是 1年1月1日 - 5883516年1月1日,进度为日
nvarchar,varchar,nchar,char 这四种字符串类型可以支持指定长度和不限长度,不限长度时写成 (max),如 nvarchar(max)
如果字符串类型作为非全文方式索引(Untokenized index) 则长度最大为32。
column_deFinition
列名
同 T-sql,如果是关键字,用[]指定列名。
数据类型
见上一节
索引类型-可选
Tokenized
Tokenized 索引类型表示该字段为全文索引字段,如果指定这个类型,必选指定Analyzer,即分析器的名称
Untokenized
Untokenized 索引类型表示该字段为非全文索引字段,通常为一些价格,面积,分类等元数据字段,如果需要在搜索全文是同时过滤元数据,必须将相应元数据字段设置为Untokenized 类型索引字段。
None
默认索引类型,仅存储。
Analyzer
如果索引类型是 Tokenized,必须通过Analyzer 关键字指定分析器的名称。
如 Analyzer ‘SimpleAnalyzer’,用户可以通过实现IAnalyzer接口,并通过SP_AddExternalReference 系统存储过程将自己编写的分析器安装到Hubble.net中。
NULL,NOT NULL
Tokenized,Untokenized 类型索引字段必须为 NOT NULL,None 类型索引字段可以为NULL.
Default-可选
指定字段的默认值
PRIMARY KEY
可以在字段定义中指定该字段为主键字段。注意通过Hubble.net设置的主键字段不是聚集索引,而是非聚集唯一性索引。Hubble.net 中表的聚集索引字段为DocId.
DocId 字段
DocId 字段是Hubble.net 为每张表默认建立的字段,用户在编写建表语句是不需要指定这个字段。这个字段为自增长字段且是唯一性聚集性索引。这个字段用于定位指定的记录。
其他约束
Hubble.net 为了简化建表语句,在建表语句中不提供其他约束的定义,如果要这只其他的约束,比如字段的范围等,可以通过SP_Excutesql系统存储过程来设置。
示例
1. 简单的新闻表
[Directory('d:/test/news/')]
[DBAdapter('sqlSERVER2005')]
[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]
Create table News
(
Title nvarchar(max) Tokenized Analyzer 'SimpleAnalyzer' NOT NULL Default '',
Content nvarchar(max) Tokenized Analyzer 'SimpleAnalyzer' NOT NULL Default '',
Time SmallDateTime Untokenized NOT NULL Default '1990-01-01',
Url nvarchar(max)
);
exec SP_Excutesql 'News','Create index I_Time on news(time) ';
以上建表语句建立一个News全文索引表,全文索引建立在d:/test/news 目录下,这个表和本地sqlSERVER2005或2008 数据库的默认实例中的Test 库中的News表关联。
这个表有四个字段,其中Title,Content 为全文索引字段,Time 为非全文索引字段,Url 为仅存储字段。
表建立完成后,我们通过 SP_Excutesql 直接操作sqlSERVER2005 数据库中的Test 数据库,在数据库中建立为Time 字段建立一个非聚集索引,
这个索引在仅仅对Time 进行范围查询时有用。
2. 指定主键
单字段主键
[Directory('d:/test/news/')]
[DBAdapter('sqlSERVER2005')]
[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]
Create table News
(
NewsId int NOT NULL PRIMARY KEY,
Title nvarchar(max) Tokenized Analyzer 'SimpleAnalyzer' NOT NULL Default '',
Url nvarchar(max)
);
这个表中,我们指定NewsId 字段为主键字段
多字段主键
[Directory('d:/test/news/')]
[DBAdapter('sqlSERVER2005')]
[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]
Create table News
(
NewsId int NOT NULL PRIMARY KEY,
NewsType nvarchar(16) UnTokenized NOT NULL PRIMARY KEY,
Url nvarchar(max)
);
这个表中,我们指定NewsId 和NewsType字段为主键字段
仅索引
[Directory('d:/test/news/')]
[IndexOnly]
[DBTableName('Mynews')]
[DBAdapter('sqlSERVER2005')]
[DBConnect('Data Source=(local);Initial Catalog=Test;Integrated Security=True')]
Create table News
(
NewsId int NOT NULL PRIMARY KEY,
Url nvarchar(max)
);
该建表语句指定该表仅仅进行索引,并且该表关联的数据库中的表名指定为Mynews.
指定为仅索引后,我们可以通过SP_Rebuild 存储过程,对数据库表Mynews中的索引记录重新创建索引。这种方法一般用于全文索引丢失后的重建。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。