前言:微软的SQL Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但SQL Server 70以前的数据库系统由于没有全文检索功能,致使无法提供像文本内容查找此类的服务,成为一个小小的遗憾。从SQL Server 70起,到如今的SQL Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。
建立全文索引
在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引 *** 作,SQL Server 70新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称):
1 启动数据库的全文处理功能(sp_fulltext_
database);;
2 建立全文检索目录(sp_fulltext_catalog);
3在全文检索目录中注册需要全文索引的表(sp_fulltext_table);
4 指出表中需要全文检索的列名(sp_fulltext_
column);;
5 为表创建全文索引(sp_fulltext_table);;
6 填充全文检索目录(sp_fulltext_catalog)。
下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。
use test //打开数据库
//打开全文索引支持,启动SQL Server的全文搜索服务
execute sp_fulltext_database ‘enable’
//建立全文检索目录ft_test
execute sp_fulltext_catalog ‘ft_test’, ‘create’
为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。
execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’
//设置全文索引列名
execute sp_fulltext_column ‘book’, ‘title’, ‘add’
execute sp_fulltext_column ‘book’,‘notes’, ‘add’
//建立全文索引
execute sp_fulltext_table ‘book’, ‘activate’
//填充全文索引目录
execute sp_fulltext_catalog ‘ft_test’, ‘start_full’
至此,全文索引建立完毕。
进行全文检索
SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({column | }), <contains_search_condition> )
其中,column是搜索列,使用“”时说明对表中所有全文索引列进行搜索。Contains_search_
condition 说明CONTAINS语句的搜索内容,其语法格式为:
{||||}[{{AND|AND NOT|OR}}] [n]
下面就simple_term和prefix_term参数做简要说明:
simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:
{‘word’|“ phrase”}
prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:
{“word” | “phrase”}
例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
select title, notes
from book
where contains(tilte, ‘database’) or contains(notes,‘database’)
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’)
首先,将不同格式的文件通过相应的解析器解析成文本形式然后,调用分析器对文本进行分析,主要是做分词,以构建倒排索引。最后,建立索引。搜索引擎的数据库,是一个庞大复杂的索引数据库1;搜索引擎蜘蛛抓取了网页后,读取页面各种属性信息2;抓取网站内容信息,及我们常用的搜索引擎抓取模拟工具得出来的文字内容3;将内容按切词技术,包括正反向切词,正向切词,反向切词,关键字最少化切词,反馈切词技术等,得到一系列目标关键字4;抓取关键字出现的位置,在第3段模拟抓取中,我们可以看到title、keywords与description,及页面内容。这可以很明显得看出关键字出现的位置 5;将第4段得到的目标关键字与第5段得到的位置信息形成一个数组文档,再将这个数组及其他此时生成的文件存入到数据库中
以上就是关于建立全文检索的sql语句全部的内容,包括:建立全文检索的sql语句、搜索引擎如何建立索引、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)