Hubbledotnet中文手册解读.doc

上传人:scccc 文档编号:13822822 上传时间:2022-01-24 格式:DOC 页数:38 大小:574KB
返回 下载 相关 举报
Hubbledotnet中文手册解读.doc_第1页
第1页 / 共38页
Hubbledotnet中文手册解读.doc_第2页
第2页 / 共38页
Hubbledotnet中文手册解读.doc_第3页
第3页 / 共38页
Hubbledotnet中文手册解读.doc_第4页
第4页 / 共38页
Hubbledotnet中文手册解读.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《Hubbledotnet中文手册解读.doc》由会员分享,可在线阅读,更多相关《Hubbledotnet中文手册解读.doc(38页珍藏版)》请在三一文库上搜索。

1、H 使用手册H Team最后更新时间 2009-12-14Version: 0.7.1.0系统简介 3物理视图 3逻辑视图 4三级缓存 5并发控制 6内存管理 6SQL 语句 6T-SFQL 语言 6数据库操作 6创建数据库 6删除数据库 7数据表操作 7建表 7删除表 14插入(In sert)语句14Syntax 15Arguments15示例 16批量插入 17示例 17删除(Delete)语句 17Syntax 17示例 18修改 (Update) 语句 18Syntax 18示例 19查询(Select)语句 19Syntax 19Arguments 1 9示例 23系统存储过程 2

2、4SP_AddDatabase24SP_AddExternalReference 24SP_AnalyzerList 25SP_Columns 25SP_Configure 25SP_DatabaseList 26SP_DBAdapterList 26SP_DeleteExternalReference 27SP_DropDatabase 27SP_DropTable 28SP_ExcuteSq.l 28SP_ExcuteSq.l 29SP_GetWordsPositions 29SP_OptimizeTable 30SP_QueryCacheReport 30SP_QuerySql 30SP

3、_ShowExternalReference 31SP_TableList 32SP_TableQueryCache 32SP_TestAnalyzer 32SP_UpdateDatabas.e 33SP_Version 33SQLClient 33示例 1:执行无返回命令 34示例 2:执行有返回命令 34示例 3:执行带参数命令 35示例 4:使用数据缓存 35示例 4:高亮显示 36查询分析器 37系统简介H是一个基于.net framework的开源全文搜索数据库项目。全文搜索 数据库系统区别于普通关系数据库系统,它可以让使用者方便的文本信息进行全文 搜索,同时它也提供对数据库中字段的

4、逻辑查询。目前的一些主流数据库都提供了 FullText Search功能,但其全文搜索的功能相对较弱,无法很好的满足实际应用需 要,而一些全文搜索组件,比如比较著名的Luce ne,则只提供了全文搜索功能,而缺乏和关系数据库的关联。Hubble, net是一款集合全文搜索和关系查询于一体的 新型数据库系统,用户可以方便的通过 SQL语句对数据库进行全文搜索,关系查 询甚至全文+关系的查询。物理视图Hubble .net physical viewHubble .net将全文搜索和关系数据库整合到一起,通过SQL语句对数据库中的数据进行全文和关系查询。Hubble .net组件本身负责对全文数

5、据进行倒排索引,并将 索引存储到表所指定的目录下,数据的存储则由和Hubble. net关联的关系数据库完成。H提供了一个IDBAdpter接口,用户可以根据这个接口实现自定义的 数据库适配。如何添加自定义的数据库适配器,将在存储过程一节中阐述。建立倒 排索引时需要对输入的全文文本进行分词,Hubble .net为用户提供了一个IAn alyzer 接口来完成自定义的分词器。如何添加自定义的分词器,将在存储过程一节中阐 述。H在安装后以一个系统服务的形式存在。 H提供一个Hubble.SQLClient组件来和H的系统服务进行交互,SQLClient的接口和 A中的SqlClient接口类型,

6、具体将在 SQLClient 节中阐述。逻辑视图Hubble .net logistic viewHubble .net和关系数据库一样,存在数据库和数据库表的概念。Hubble. net的数据库和数据表只是提供一个和对应关系数据库的映射描述关系,并不存在数据库和数 据表的实体。用户在通过 SQL语句操作H的数据库和数据表是,Hubble .net将自动和对应的关系数据库实体进行关联,从用户侧看,Hubble. net就像一个数据库实体。Hubble .net负责建立文本字段的倒排索引和Un toke ni zed字段的单值索引。关系数据库负责建立B+树索引。如果查询语句不包括对全文字段的搜索

7、,则直接转发给 数据库利用数据库的索引进行查询。三级缓存Hubble .net three level cache如上图所示,Hubble, net提供三种级别的缓存方案。Index cache:索引级别缓存用于缓存倒排索引和单值索弓I。这种缓存为系统自动 管理,不能关闭。索引级别缓存会自动监控数据的增删改,并进行相应修改。Query cache:查询级别缓存对查询的条件进行缓存,H系统服务会将不同查询条件对应的文档ID (DocId)缓存下来,下次查询时直接从缓存中获取符合条件的文档 ID ,不再访问低级别缓存或索引。和索引级别缓存不同的是,当表的数 据发生变化时,查询级别缓存将会失效,需要

8、重新缓存。Data cache:数据级别缓存运行在客户端,客户端查询得到的数据被缓存下来,下 次查询时将从数据缓存中直接获取数据,而不再到 H 系统服务中去获取数 据。和查询级别缓存一样,表的数据发生变化时,数据级别缓存将会失效,需要重 新缓存。并发控制H 设计了非常完善的并发控制机制,用户的增删改查可以同时进行,不会 存在任何冲突。内存管理Hubble .net以系统服务存在,不会像 Luce ne那样和应用程序共用内存。Hubble, net 设计了一套内存管理机制,用户可以设置最大内存使用数量,一旦 H 使用 内存超过这个数量, H 就会自动启动内存整理程序,将一些不经常使用的 缓存从内

9、存中清理掉以腾出更多的内存空间给用户。用户可以通过SP_CONFIGURE 存储过程来查看和管理内存。SQL 语句T-SFQL 语言T-SFQL (Transact-Structured Full-text Query Language)是在 T-SQL 标准基础上衍生 出来的结构化全文查询语言。2009年由 H 提出,用于全文数据库的查询和管理。数据库操作创建数据库EXEC SP_ADDDATABASE第一个参数是 数据库名,这个数据库名指在 H 中创建的数据库名。 第二个参数是数据库的默认路径,建表时如果不指定表的路径,则默认将表文件建 立在表所在数据库的默认路径下。第三个参数是默认数据库

10、适配器名称,建表时如果不指定数据库适配器,则使用表所在数据库的默认数据库适配器。 H 自带一个数据库适配器SQLSERVER2005,SQLSERVER 2005 数据库适配器可以支持 SQLSERVER 2005 及以后版本。第四个参数是默认连接字符串,这个字符串用于将 H 和数据库相关联。建 表时,如果不指定数据库连接字符串,则使用表所在数据库的默认数据库连接字符 串。创建数据库操作只创建 H 和关系数据库的关联关系,不会在关系数据库中 创建数据库。这种关联关系由第三和第四个参数指定。示例:exec sp_adddatabase News, d:testnews, SQLSERVER200

11、5, DataSource=(local);Initial Catalog=News;Integrated Security=True;删除数据库EXEC SP_DROPDATABASE第一个参数是 数据库名,这个数据库名指在 H 中创建的数据库名。删除数据库操作只删除 H 和关系数据库的关联关系,不会删除关系数据库 中对应的数据库。数据表操作建表语法Directory(directory) -OptionalIndexOnly -OptionalForceCollectCount(count) -OptionalDBTableName(table name) -OptionalDBAdapt

12、er(adapter name)-OptionalDBConnect(connection string) -OptionalCREATE TABLEtable_name |column_nameAS computed_column_expression | ,.n )属性Directory(directory) -Optional这个属性指定全文索引在本地的地址。这个属性是可选属性。不指定,将使用该表 对应数据库的默认本地地址。全文索引将被建立在这个地址下。IndexOnly -Optional这个属性指定全文数据表为仅仅索引。这个属性是可选属性。如果设置为仅仅索引,在执行插入,修改和删除语

13、句时只修改索引,而不修改数据 本身。这个设置在 Rebuild 或者数据库驱动索引时有用。ForceCollectCount(count) -Optional强制回收数据的记录数,可选属性。当批量插入时, H 并不会立即更新索引,而是要到插入数量超过ForceCollectio nCou nt时才更新索引,这样做是为了尽可能提高索引的效率。ForecCollectionCount的默认值为5000.可以修改这个值为任意正整数。DBTableName(table name) -Optional数据库中对应表的表名,可选属性。由于Hubble .net全文索引是和数据库关联的,Hubble, ne

14、t负责索引,数据库负责存 储。如果希望H中的表名和数据库的表名不一样,可以通过这个属性来设 置。默认情况下,数据库表名和 Hubble. net的表名相同。DBAdapter(adapter name) -Optional数据库适配器名,可选属性。如果不指定,将使用该表所在数据库的默认数据库适 配器。在 这里指定采用哪种数据库适配器。 H 目前提供 MS SQLSERVER 2005/2008 的数据库适配器。用户可以通过实现 IDBAdapter 接口,并通过SP_AddExternalRefere nee系统存储过程将自己编写的数据库适配器安装到 Hubble .net 中。DBConne

15、ct(connection string)-Optional连接字符串,可选属性。如果不指定,将使用该表所在数据库的默认数据库连接字 符串。这个属性指定连接数据库适配器对应的数据库的连接字符串。数据类型目前支持的数据类型有Int, TinyInt, SmallInt, BigInt, Float, DateTime, SmallDateTime, Date, NVarehar, Varehar, NChar, Char其中datetime 的范围为 .net 中 datetime 数据类型的时间范围,精度为毫秒smalldatetime 的范围是 1980年 1月 1日 0:0:0 - 204

16、7年12月 31日 23:59:59, 精度为 秒date 的范围是 1年 1月 1日 - 5883516年 1月 1日,进度为日n varchar, varchar, nchar, eha这四种字符串类型可以支持指定长度和不限长度,不 限长度时写成 (max) ,如 nvarehar(max)如果字符串类型作为非全文方式索引( Untokenized index) 则长度最大为 32。column_definition列名同 T-SQL, 如果是关键字,用 指定列名。数据类型见上一节索引类型 -可选TokenizedTokenized 索引类型表示该字段为全文索引字段,如果指定这个类型,必选

17、指定Analyzer,即分析器的名称UntokenizedUntokenized 索引类型表示该字段为非全文索引字段,通常为一些价格,面积,分 类等元数据字段,如果需要在搜索全文是同时过滤元数据,必须将相应元数据字段 设置为 Untokenized 类型索引字段。None默认索引类型,仅存储。Analyzer如果索引类型是 Tokenized, 必须通过 Analyzer 关键字指定分析器的名称。如AnalyzerSimpleAnalyze用户可以通过实现IAnalyzer接口,并通过SP_AddExternalRefere nee系统存储过程将自己编写的分析器安装到Hubble .net中。

18、NULL, NOT NULLTokenized, Untokenized 类型索引字段必须为 NOT NULL, None 类型索引字段可以 为 NULL.Default-可选指定字段的默认值PRIMARY KEY可以在字段定义中指定该字段为主键字段。注意通过Hubble .net设置的主键字段不是聚集索引,而是非聚集唯一性索引。 H 中表的聚集索引字段为 DoeId.FASTEST可以声明某个全文索引字段采用最快方式建立索引,最快方式建立索引时,倒排索 引不存储单词分量的位置信息,减小了索引的大小。需要注意的是如果选择用 FASTEST 方式建立索引,则不能用 Like 来对全文进行 查询,

19、只能使用 Match。DocId 字段DocId 字段是 H 为每张表默认建立的字段,用户在编写建表语句是不需要 指定这个字段。这个字段为自增长字段且是唯一性聚集性索引。这个字段用于定位 指定的记录。用户插入数据时也不需要指定这个字段。其他约束H 为了简化建表语句,在建表语句中不提供其他约束的定义,如果要这只 其他的约束,比如字段的范围等,可以通过SP_ExcuteSql系统存储过程来设置。注意:建表语句将自动在对应的关系数据库中创建相应的数据表。示例1. 简单的新闻表 (指定本地地址和数据库适配器等属性 )Create table News(Title nvarchar(max) Token

20、ized 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 Create index I_Time on news(time) ; 以上建表语句建立一个News全文索引表,全文索引建立在 News表所在数据库指 定的默认目录

21、下,数据库适配器和连接字符串也使用所属数据库中指定的默认值。这个表有四个字段,其中 Title, Content 为全文索引字段 ,Time 为非全文索引字段, Url 为仅存储字段。表建立完成后,我们通过 SP_ExcuteSql直接操作SQLSERVER2005数据库中的Test 数据库,在数据库中建立为 Time 字段建立一个非聚集索引,这个索引在仅仅对 Time 进行范围查询时有用。2. 简单的新闻表 (指定本地地址和数据库适配器等属性)Directory(d:testnews)DBAdapter(SQLSERVER2005)DBConnect(Data Source=(local);

22、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_Excu

23、teSql Create index I_Time on news(time) ;以上建表语句建立一个 News 全文索引表,全文索引建立在 d:testnews 目录下, 这个表和本地SQLSERVER2005或2008数据库的默认实例中的 Test库中的News 表关联。这个表有四个字段,其中 Title, Content 为全文索引字段 ,Time 为非全文索引字段, Url 为仅存储字段。表建立完成后,我们通过 SP_ExcuteSql直接操作SQLSERVER2005数据库中的 Test 数据库,在数据库中建立为 Time 字段建立一个非聚集索引,这个索引在仅仅对 Time 进行范围

24、查询时有用。3. 指定主键单字段主键Directory(d:testnews)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 , Content nvarchar(max) Tokenized Analyz

25、er SimpleAnalyzer NOT NULL Default Time SmallDateTime Untokenized NOT NULL Default 1990-01-01 ,Url nvarchar(max);这个表中,我们指定 NewsId 字段为主键字段 多字段主键Directory(d:testnews)DBAdapter(SQLSERVER2005)DBConnect(Data Source=(local);Initial Catalog=Test;Integrated Security=True) Create table News(NewsId int NOT NU

26、LL PRIMARY KEY,NewsType nvarchar(16) UnTokenized NOT NULL PRIMARY KEY,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);这个表中,我

27、们指定 NewsId 和 NewsType 字段为主键字段删除表EXEC SP_DROPTABLE 这个存储过程有一个唯一的参数就是表名。如果要删除的表不存在,同样成功返 回。注意: 执行这个存储过程将会同时删除关系数据库中对应的表,所以一定要小 心。示例Exec sp_droptable News该语句删除当前数据库中的 News 表。插入(Insert)语句T-SFQL 的 Insert 语句的语法和 T-SQL 基本一致,省略了 table hint limited 部分Syn taxINSERT INTOtable_ name) _(colum nist) VALUES ( DEFAU

28、LT| NULL| expressi on,n)| DEFAULT VALUESArgume ntsINTOIs an optional keyword that can be used between INSERT and the target table.table_ nameIs the n ame of a table that is to receive the data.(colu mnist)Is a list of one or more columns in which to insert data.column_list must be en closed in pare

29、ntheses and delimited by commas.If a column is not in column_list, Microsoft? SQL Server? must be able to provide a value based on the definition of the column; otherwise, the row cannot be loaded. SQL Server automatically provides a value for the column if the colu mn:* Has an IDENTITY property. Th

30、e n ext in creme ntal ide ntity value is used.* Has a default. The default value for the colu mn is used.* Has a timestamp data type. The curre nt timestamp value is used.Is nu liable. A null value is used.column_list and VALUES list must be used when inserting explicit values into an identity colum

31、n, and the SET IDENTITY_INSERT option must be ON for the table.VALUESIntroduces the list of data values to be inserted. There must be one data value for each column in column_list (if specified) or in the table. The values list must be enclosed in parentheses.If the values in the VALUES list are not

32、 in the same order as the columns in the table or do not have a value for each column in the tablec,olumn_list must be used to explicitly specify the column that stores each incoming value.DEFAULTForces SQL Server to load the default value defined for a column. If a default does not exist for the co

33、lumn and the column allows NULLs, NULL is inserted. For a column defined with the timestamp data type, the next timestamp value is inserted. DEFAULT is not valid for an identity column.expressionIs a constant, a variable, or an expression. The expression cannot contain a SELECT or EXECUTE statement.

34、DEFAULT VALUESForces the new row to contain the default values defined for each column.示例INSERT T1 VALUES (1, Row #1) ;INSERT INTO T1 (column_1,column_2) VALUES (-99,Explicit identity value) ;批量插入大数据量插入时,如果每次都单条记录插入,插入的速度会很慢,这种情况下我们 需要批量插入。批量插入时,只需要一次将多条 insert 语句发送给 就可 以, 每条 insert 语句以分号“ ;”结尾。当要批量

35、插入的数据很多时,我们建议以 1000-5000条记录为一组,分批执行批量 插入操作,这样插入的速度会大大提高。示例INSERT T1 VALUES (1, Row #1) ;INSERT T1 VALUES (2, Row #2) ;INSERT T1 VALUES (3, Row #3) ;INSERT T1 VALUES (4, Row #4) ;INSERT T1 VALUES (5, Row #5) ;以上 SQL 语句一次批量插入 5条记录删除( Delete )语句Delete语句的语法和SQL的Delete完全相同。Where子句参加Select语句。SyntaxDELETEF

36、ROM table_nameWITH ( . n) | view_name| rowset_function_limited FROM ,.n n=1 WHERE 示例Delete T where cl 100 and cl 200 and c2 matchChi na256.3 Be Jin gA100ShangHai查找 表 T 中 C1 大于 100 且小于 200 并且 C2 匹配 China ,BeiJing 和 ShangHai 三个单词的记录。并将这些记录删除。修改(Update)语句Update语句的语法和 SQL的Update完全相同。Where子句参加Select语句。Sy

37、ntaxUPDATEtable_nameWITH ( . n)| view_name| rowset_function_limitedSETcolumn_name= expression| DEFAULT | NULL |variable = expression|variable = column = expression ,.nFROM ,.n n=1WHERE 示例Update T Set cl = 12 where cl 100 and cl 200 and c2 match naA256.3ChiBeiJi ngA100 Sha ngHai查找表T中C1大于100且小于200并且C2

38、匹配China , BeiJing和ShangHai 三个单词的记录。并将这些记录中 c1 字段的值更改为 12。查询(Select)语句T-SFQL 0.1版本的Select语句是T-SQL的Select语句的子集,只提供单表的查询 功能。不提供 Group by , Having 语句,不提供 Sum,Avg 等统计函数,不提供 Distinet. Union等语法。Where子句中增加了全文搜索的语法元素。分页的查询功 能在H库中提供,不在SQL中提供,因此取消Top功能。Order by语句 只限定为单字段排序。SyntaxSELECT ALL FROM ,.n n =1 WHERE

39、ORDER BY order_by_expression| column_position ASC | DESC ,.n n=1ArgumentsTop n列出前 n 条记录Between n1 To n2列出从 n1 到 n2 之间的记录(包括 n2)ALL列出被查询表中所有的列,通常用 * 表示 ALLselect list列出指定的列FROM指定查询的源。table_source表名,0.1版本只提供单表查询,这里只能写一个表名WHEREWhere子句和T-SQL的查询字句一致,0.1版本不提供 Where子句中使用函数等内 容,只提供最简化的布尔表达式。为适应全文搜索的需要,T-SFQ

40、L语句在T-SQL标准基础上做了增加,下面重点描述增加的部分:指定字段权重T-SFQL语句只允许对全文索引字段指定权重,对其它字段指定权值无效。语法:FieldNameABoostA为分隔符,表示设置权重开始Boost为权重,无符号整型,范围为 0-65535例:Select * from T where cM5 match BeiJing 指定记录权重Hubble .net支持对指定记录设置权重。设置的方法是在建表时在表中创建一个 Int类型名为Rank的字段,通过改变这个字段的值,可以指定相应记录的权 重。例:Create table News(NewsId int NOT NULL PR

41、IMARY KEY,Title n varchar(max) Toke nized An alyzer SimpleA nalyzer NOT NULL Default ”,Co ntent n varchar(max) Toke nized An alyzer SimpleA nalyzer NOT NULL Default Time SmallDateTime Untokenized NOT NULL Default 1990-01-01,Url nv archar(max),Rank Int Un toke nized NOT NULL,);位置无关模糊匹配位置无关模糊匹配指被匹配的关键

42、字无论其位置关系如何,得到的记录得分都 相同。比如 匹配China BeiJing和BeiJing China得到的结果是相同的。语法:FieldName Match QuewordsABoostQuery words:要查询的单词,可以为多个单词,单词之间以空格分隔A:分隔符,表示设置权重开始。Boost:权重,无符号整型,范围为 0-65535。可选项,不指定权重则默认权重 为1。例:Select * from T where C2 Match Chi naA256 Be Jin gA100ha ngHai位置相关模糊匹配位置无关模糊匹配指被匹配的关键字随其位置关系不同会得到不同的记录得

43、分。比如匹配China BeiJing和BeiJing China得到的结果是不同。前者会将全文中 存在China BeiJing这个顺序的文章得分提高,而将 BeiJing China这个顺序的文 章得分降低。T-SFQL借用了 SQL中的Like关键字来表示位置相关的模糊匹配。语法:FieldName Like QuewprdsABoostAPositio nQuery words:要查询的单词,可以为多个单词,单词之间以空格分隔。a:分隔符,表示设置权重或者位置开始。Boost:权重,无符号整型,范围为 0-65535。可选项,不指定权重则默认权重 为 1 。Position: 单词的起

44、始位置,无符号整型,可选项,必须在权重之后出现。如果 不指定,则默认为单词出现在查询字符串中的位置。例:Select * from T where C2 LikeChi naA256P Be Jin gA100A6 Sha ngHaiA13Select * from T where C2 Like 中国八256八0 中国人八100八0 Select * from T where C2 Like BeiJing China1.如果元数据字段的逻辑查询需要和全文搜索同时进行,必须要将该元数据字段设 置为 Untokenized。2. Where 语句中如果同时存在 and 和 or ,必须用挎号进行分割。比如:Where c1 100 and c1 200 orc2 match ChinaA256 BeiJingA1S0h0angHai这句 H 将无法解析,必

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1