SQL Server 2000 建立全文检索服务

发布:2010-12-16 09:16   点击864次   评论:0


 ●●***●● 建立全文检索服务:
http://tieba.baidu.com/f?kz=351399047

第四步,打开SQL Server的管理器,在左侧的树视中点击数据库。然后点开数据库EnglishData.。选择“全文目录”。点击右键,选择“新建全文目录”,建立全文目录Paper-AbstractFullSearch,然后建立名称为AbstraetSearch的调度。其他接受默认。
第五步,选择企业管理器的右侧的表Papers,单击右键,选中“全文索引表”,单击“在表上建立全文索引”。将会出现“全文索引向导”窗口。点击“下一步”会到达“选择索引”窗口。由于本表只有一个唯一索引paper_id,点击“下一步”,会出现“选择表中的列”窗口。选择“paper_abstract”字段,然后点击“下一步”,出现“选择目录”窗口,接受默认配置,点击“下一步”,出现的窗口“选择或创建填充调度(可选)”窗口,接受默认配置再点击下一步。出现“正在完成SQL Server全文索引向导”,点击“完成”。完成配置。
第六步,选择表Papers,点击右键,选择“全文索引表”,点击“启动完全填充”,等待完成。
第八步,如果以后对表Papers进行任何的修改(包括添加、删除记录和对原记录进行编辑),都要重复第六步的操作。这一步是为了保证全文索引库能够与表Papers的修改同步。

全文检索
SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表所有列或指定列中搜索:
●一个字或短语;
●一个字或短语的前缀;
●与一个字相近的另一个字;
●一个字的派生字;
●一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({column *}),‘’) 其中,column说明被搜索列,使用时说明对表中所有全文索引列莲行搜索
select title,notes from book
where contains(tilte,‘database’)or contains(notes,‘datable’)
or contains(title,‘computer’)or contains(notes,‘computer’)

FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:
FREETEXT({column * },‘freetext_string’)
其中,column说明被搜索列,使用*时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
例如,下面语句使用FREETEXT语句搜索book表中包含Successful Life字符串的数据行:
select title,notes
from book
where freetext (*,‘Successful Life’)

通过和实践,我认为SQLServer2000的全文检索服务有以下优点:
第一,简单易用。由于SQLServer2000的全文检索服务已经集成到整个服务中,因此,全文检索可以使用“管理器”进行统一的图形界面的管理。而且,进行检索时可以使用标准的T—SQL语句,学习、使用十分方便。
第二,SQLServer2000功能强大。比如,其自身具有“噪音词”(noiseterm )过滤的机制。在“.MSSQL\TDATA\SQL Server\config”目录下,有一个“noise.dat”文件类似于停用词表,可以对一些没有检索意义的词如a、you等进行过滤而不建立索引。用户自己也可以对该词表进行增补,以过滤一些词。同时,我发现SQLServer2000的全文检索存在一些不足。如当用户对全文索引过的字段进行修改后,需要用户进行手工的“填充”,而不能机器自动完成这一步,另外该系统对机硬件要求较高等等。随着计算机硬件的以及SQL Server软件本身的不断完善,我相信这些不足是可以得到改善的。


 ●●***●● 在ASP中运用SQL全文检索实现大量数据模糊查询。
http://topic.csdn.net/t/20041130/13/3601481.html

大家可能都会用
select   *   from   tb   where   field   like   ''%关键字% ''
但是一旦数据量大用户多,就会造成查询过慢,因此MS提供一种牺牲空间来换取时间的解决方案。

全文检索是模糊的查询,不适合精确查询。
比如你查询“不知道”,他可能把含有“不”和“知道”的都反回来。
精确查询要从架构上下工夫。
如果数据过多,考虑查询时候分类,把一个大表裂开到不同数据库(甚至是不同机器)上。

关于 GitHub 导航 部门 反馈

提示:`/home.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved.

Run:36.111/64.001(ms); 7(sql)/2.889(MB); comm:news/detail; Upd:2024-05-05 19:37:29