[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 ]
)
这个属性指定全文索引在本地的地址。这个属性是必选属性。
全文索引将被建立在这个地址下。这个属性指定全文数据表为仅仅索引。这个属性是可选属性。
如果设置为仅仅索引,在执行插入,修改和删除语句时只修改索引,而不修改数据本身。这个设置在Rebuild 或者数据库驱动索引时有用。
强制回收数据的记录数,可选属性。
当批量插入时,Hubble.net并不会立即更新索引,而是要到插入数量超过ForceCollectionCount时才更新索引,这样做是为了尽可能提高索引的效率。ForecCollectionCount的默认值为5000. 可以修改这个值为任意正整数。
数据库中对应表的表名,可选属性。
由于Hubble.net全文索引是和数据库关联的,Hubble.net负责索引,数据库负责存储。如果希望Hubble.net中的表名和数据库的表名不一样,可以通过这个属性来设置。默认情况下,数据库表名和Hubble.net的表名相同。
数据库适配器名,必选属性
在这里指定采用哪种数据库适配器。Hubble.net 目前默认提供MS SQLSERVER 2005/2008 的数据库适配器。用户可以通过实现 IDBAdapter 接口,并通过SP_AddExternalReference 系统存储过程将自己编写的数据库适配器安装到Hubble.net中。
连接字符串,必选属性
这个属性指定连接数据库适配器对应的数据库的连接字符串。
目前支持的数据类型有
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。
同 T-SQL, 如果是关键字,用[]指定列名。
见上一节
Tokenized 索引类型表示该字段为全文索引字段,如果指定这个类型,必选指定Analyzer,即分析器的名称
Untokenized 索引类型表示该字段为非全文索引字段,通常为一些价格,面积,分类等元数据字段,如果需要在搜索全文是同时过滤元数据,必须将相应元数据字段设置为Untokenized 类型索引字段。
None
默认索引类型,仅存储。
如果索引类型是 Tokenized, 必须通过Analyzer 关键字指定分析器的名称。
如 Analyzer ‘SimpleAnalyzer’, 用户可以通过实现IAnalyzer接口,并通过SP_AddExternalReference 系统存储过程将自己编写的分析器安装到Hubble.net中。
Tokenized, Untokenized 类型索引字段必须为 NOT NULL, None 类型索引字段可以为NULL.
指定字段的默认值
可以在字段定义中指定该字段为主键字段。注意通过Hubble.net设置的主键字段不是聚集索引,而是非聚集唯一性索引。Hubble.net 中表的聚集索引字段为DocId.
DocId 字段是Hubble.net 为每张表默认建立的字段,用户在编写建表语句是不需要指定这个字段。这个字段为自增长字段且是唯一性聚集性索引。这个字段用于定位指定的记录。
Hubble.net 为了简化建表语句,在建表语句中不提供其他约束的定义,如果要这只其他的约束,比如字段的范围等,可以通过SP_ExcuteSql系统存储过程来设置。
[Directory('d:\test\news\')]
以上建表语句建立一个News全文索引表,全文索引建立在d:\test\news 目录下,这个表和本地SQLSERVER2005或2008 数据库的默认实例中的Test 库中的News表关联。
这个表有四个字段,其中Title, Content 为全文索引字段,Time 为非全文索引字段,Url 为仅存储字段。
表建立完成后,我们通过 SP_ExcuteSql 直接操作SQLSERVER2005 数据库中的Test 数据库,在数据库中建立为Time 字段建立一个非聚集索引,
这个索引在仅仅对Time 进行范围查询时有用。
[Directory('d:\test\news\')]
这个表中,我们指定NewsId 字段为主键字段
[Directory('d:\test\news\')]
这个表中,我们指定NewsId 和NewsType字段为主键字段
[Directory('d:\test\news\')]
该建表语句指定该表仅仅进行索引,并且该表关联的数据库中的表名指定为MyNews.
指定为仅索引后,我们可以通过SP_Rebuild 存储过程,对数据库表MyNews中的索引记录重新创建索引。这种方法一般用于全文索引丢失后的重建。