`

建立SQL全文索引提升搜索速度

阅读更多

要实现搜索引擎的模糊查找功能,使用SQL的关键字LIKE来实现模式匹配。

现在我们有一个数据库,表名叫T1,有记录数一万条。Title字段是文本字段,长度为255,Body为备注字段。看下面的SQL语句:

Select * From T1 Where Title Like '%迅雷%'

则这句话就是要返回Table1表中Title字段里包含‘迅雷’的所有记录。由于Title是文本字段,长度也不大,故其查找速度还可以接受。

现在我们要返回Title或Body字段中包含‘迅雷’的所有记录:

Select * From T1 Where Title Like '%迅雷%' Or Body Like '%迅雷%'速度慢了许多倍,这样的速度用于Web搜索,用户会有这个耐心去等待吗?

如何解决在模糊查找中的速度问题,这就是我们今天要引出的全文索引的话题。

关于全文索引,一个能说明问题的例子就是:

给你一本你没看过的书,指定书里面存在的一句话让你去查找,而且不能看目录(索引),那么你只能一页一页的翻书本去查找了,想一想,你对这本书的内容也不了解,这样的查找速度会快吗?

如果允许看目录(索引),根据目录(索引)的指引,你也许会更快的找到(如果这个索引和要查找的话关联性大)。另外,我们再假如你很喜欢这本书,并且每天阅读,过一段时间,你已经对书本的内容了如指掌,这个时候,让你再找一段话,你是不是一下子便能知道这句话大概的位置?然后根据大概位置在附近查找,然后很快定位搜索结果。这其实可以说是你已经在你的脑子里为这本书建立了全文索引。

SQL全文索引就是将数据库的记录按词语做了事先的索引,以便在模糊查找的时候能提升速度。这些索引的词语,对于英文,每两个单词之间有一个空格,可中文不一样了,这涉及到中文分词技术。我们在使用数据库引擎的时候,引擎的全文索引其实已经使用了分词的技术,当然这并不能从表面所看到。

我们以MS SQL Server 2000为例,说明如何建立全文索引。

1、启动全文索引。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 支持服务 >> 全文检索 >> 右键菜单元 >> 启动;

2、对数据库建立全文目录。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 数据库 >> 全文目录 >> 右建菜单 >> 新建全文目录;

3、对所要建立全文索引的表建立全文索引。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 数据库 >> 你的数据库名 >> 表 >> 双击 >> 在右侧列表中选择要建立全文索引的数据表 >> 右建菜单 >> 全文索引表 >> 在表上定义全文索引 , 按向导,选择要建立全文索引的字段和全文目录,完成操作。注意,你的数据表必须有主键,否则会出现如下错误提示:“所选表中没有在不允许 NULL 的列上的唯一单个列索引”。

4、对上一步建立全文索引时选择的全文目录进行填充。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 数据库 >> 全文目录 >> 双击 >> 在右侧列表中选择全文目录 >> 右建菜单 >> 启动完全填充。注意,填充是需要时间的。

这样,给数据表建立全文索引之后我们就可以使用CONTAINS来检索了:

Select * From T1 Where Title Like '%迅雷%' OR CONTAINS(Body, '%迅雷%')试一试查询速度,第一次查询速度还是很慢,当查询驻入内存之后,查询就快了。已免强可以接受。但第一次查询速度慢的问题还需要解决,并且以后的查询离百度搜索速度还有很大距离。就是说还有很多地方可以完善的

分享到:
评论

相关推荐

    sql2005全文检索.doc

    为了提升全文索引过程的效率,Microsoft SQL Server 2005 改进了全文收集机制的体系结构,从而大大增强了性能。 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务是一个全文索引和搜索引擎。MSFTESQL ...

    搜易站内搜索引擎V1.2

    3,毫秒级的速度:基于倒排索引全文索引技术核心,实现索引分块存储千万级数据,毫秒级的搜索速度; 4,搜索功能强大:采用数据模型化概念,可以跨数据库,跨表建立博客,视频,下载等多种类别的搜索功能,当然,全...

    搜易站内搜索引擎

    3,毫秒级的速度:基于倒排索引全文索引技术核心,实现索引分块存储千万级数据,毫秒级的搜索速度; 4,搜索功能强大:采用数据模型化概念,可以跨数据库,跨表建立博客,视频,下载等多种类别的搜索功能,当然,全...

    Microsoft SQL Server 2005 Express Edition SP3

    例如,如果您在成员服务器中安装了 SQL Server Express,则不要使用 Dcpromo 工具将该服务器提升为域控制器。或者,如果您在域控制器中安装了 SQL Server Express,则不要使用 Dcpromo 将该服务器降级为成员服务器。...

    SOPI垂直搜索引擎系统 V2.2

    作用:此服务用来将完善的信息索引到索引库,提供外部进行搜索,通过索引库的建立可以向用户提供如类似BAIDU一样的搜索 存储关系: 运行方式:以WINDOW服务方式自动运行 人工干预度:不需干预 TokenizerService...

    MySQL索引类型Normal、Unique和Full Text的讲解

    MySQL的索引类型有普通索引(normal),唯一索引(unique)和全文索引(full text),合理使用索引可大大提升数据库的查询效率,下面是三种类型的索引的介绍 normal:这是最基本的索引,它没有任何限制,MyIASM中默认的...

    asp.net知识库

    在 SQL Server 2005 中查询表结构及索引 sql server 2005中的DDL触发器 在 SQL Server 2005 中使用表值函数来实现空间数据库 SQL Server 2005的30个最重要特点 同时安装sql2000和sql2005的经验 类如何与界面绑定 在...

    中安威士数据库防火墙系统(VS-FW).docx

    连续处理能力:业界最高的SQL处理能力 日志检索速度:业界最快的模糊日志检索速度 日志存储能力: 业界最高的单位磁盘存储能力 高可用性 基于硬件的Bypass功能,防止单点失败 支持双机热备功能,保证连续服务能力 ...

    数据库设计准则及方法论.docx

    根据查询所使用的列表建立索引。 根据条件语句中的谓词的选择度创建索引。 避免在建有索引的列上使用函数。 在那些需要被排序的列上创建索引。 合理使用include关键词创建索引。 指定索引的排序属性。 数据库的页...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java开源包1

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包11

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包2

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包3

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包6

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包5

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包10

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包4

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

Global site tag (gtag.js) - Google Analytics