登陆注册
7538600000019

第19章 SQL Server的全文搜索(6)

Dim connAs New SqlConnection(ConnStr)

Dim commAs New SqlCommand(sql,conn)

Dim drAs SqlDataReaderTry

conn.Open()

dr=comm.ExecuteReader

DG.DataSource=dr

DG.DataBind()

Catch exAs Exception

If Not dr Is Nothing Then

dr.Close()

End If

If Not conn Is Nothing Then

conn.Close()

End If

End Try

End Sub

EndClass

show.aspx根据传递过来的id的值,读取数据库中的相应记录,将二进制文件按照其MIME类型显示出来。

代码如下:

Imports System.Data

Imports System.Data.SqlClient

PublicClass showInherits System.Web.UI.Page

# Region"Web窗体设计器生成的代码"

"该调用是Web窗体设计器所必需的

<System.Diagnostics.DebuggerStepThrough()>Private Sub InitializeComponent()

End Sub

"注意:以下占位符声明是Web窗体设计器所必需的

"不要删除或移动它

Private designerPlaceholderDeclarationAs System.Object

Private Sub Page Init(ByVal senderAs System.Object,ByVal eAs System.EventArgs)Handles

MyBase.Init

′CODEGEN:此方法调用是Web窗体设计器所必需的

"不要使用代码编辑器修改它

InitializeComponent()

End Sub

# End Region

PrivateConnStr=System.Configuration.ConfigurationSettings.AppSettings("dsn")

Private Sub Page Load(ByVal senderAs System.Object,ByVal eAs System.EventArgs)HandlesMyBase.Load

Dim idAs String=Request.QueryString("id")

Dim connAs New SqlConnection(ConnStr)

Dim sqlAs String="select*from yuanyuan where id="&; id

Dim commAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

Try

conn.Open()

dr=comm.ExecuteReader()

If dr.Read Then

Dim ftypeAs String=dr("ftype").ToString

Response.ContentType=ftype

Dim temp()AsByte=CType(dr("fcontent"),Byte())

Response.BinaryWrite(temp)

′Dim fnameAs String=dr("fname").ToString

Response.End()

End If

Catch exAs Exception

′"

Finally

If Not dr Is Nothing Then

dr.Close()

End If

If Not conn Is Nothing Then

conn.Close()

End If

End Try

End Sub

EndClass

4.8.4运行

在浏览器中运行程序,上传文件到数据库中。单击“show”链接,可以在页面下方显示文件内容。

右键单击“show”链接,可以下载文件。

重复前面的步骤,上传多个文件到数据库中。

现在,对数据库中yuanyuan表格的fcontent建立全文索引。执行以下SQL语句:

——启用全文支持

use love

Exec sp fulltext database"enable"

——创建全文目录

Exec sp fulltext catalog"loveCatalog","create"

——注册用于全文检索的表

Exec sp fulltext table"yuanyuan","create","loveCatalog","loveyuanyuan"

——指定fcontent列为全文索引列,fext是类型列

Exec sp fulltext column"yuanyuan","fcontent","add",0x0804,"fext"

——激活全文索引

Exec sp fulltext table"yuanyuan","activate"

——执行全文目录的填充

Exec sp fulltext catalog"loveCatalog","start full"

这个时候,可以执行全文搜索了。

打开save.aspx,在搜索框中输入“大禹”,则搜索出所有含“大禹”的文档。

4.9大数据量全文检索的优化

4.9.1优化的思想

对于数据量小的表(通常指不到1000000),实现全文索引几乎不需要进行任何的性能优化。但是,对于超过百万条记录的大型表创建全文索引或填充全文目录的时候,会有大量的读写操作发生,就需要对硬件、操作的时机和实施方案等方面进行更多的考虑,进行优化。

4.9.2优化的思路

如何实施优化?在一个流程中涉及多少组件?这些组件之间有什么联系?搞清楚这些问题就可以实施优化。优化,包括组件内部优化和组件连接优化。

1.组件的作用方式

在主要的组件中,SQL Server企业管理器内的数据库树的一个节点用于管理数据库内的全文目录,SQL-DMO有用于管理全文目录和索引的对象,Transact-SQL有一组用于管理全文目录和索引的系统存储过程。

其他组件以下面的步骤和方式定义和填充全文索引。

①启用用于全文索引的MicrosoftSQL Server TM2000数据库。

②指定数据库的全文目录。

③启用用于全文索引且与目录相关联的个别表。

④每个表中的个别列被添加到表的全文索引中。从第①步到第④步的所有元数据信息都存储在SQL Server数据库内的系统表中。

⑤逐表激活各表的全文索引。当激活全文表索引时,起始种子值将从SQL Server实例发送到Microsoft搜索服务内的索引服务。起始种子值标识全文索引所涉及的表。

⑥基于逐个目录或逐个表来请求填充。基于目录填充使您得以在一个操作中填充多个索引;而填充表则允许填充特定索引。

2.填充的形式

全文目录和表的填充包含如下形式。

(1)完全填充

如果为全文目录请求完全填充,则为该目录所涉及的所有表中的所有行生成索引项。如果为表请求完全填充,则为该表中的所有行生成索引项。完全填充通常发生在当首先填充目录或索引,然后使用更改跟踪或增量填充来维护索引时。

(2)更改跟踪填充

维护在系统表中已修改的行的记录,并将更改传播到全文索引。通过执行sp fulltexttable启动更改跟踪并为@ action参数指定start change tracking。使用更改跟踪时,也指定从历史表取得更改并在全文索引中填充更改的时间。

(3)后台更新索引

用start change tracking启动更改跟踪之后,可以通过为@ action参数指定startbackground updateindex来执行sp fulltext table。使用该选项可以在对表中的行进行更改时,将这些更改传播到全文索引。

(4)按需更新索引

在该选项下,当执行sp fulltext table并为@ action参数指定update index时,将所有跟踪的更改存储到历史中并只将这些更改传播到全文索引。

(5)调度更新索引

可以使用SQL代理程序调度执行sp fulltext table并为@ action参数指定updateindex的周期性作业。这会将所有未完成的跟踪更改传播到索引。

同类推荐
  • 房屋建筑学作业集

    房屋建筑学作业集

    《房屋建筑学》是土木工程专业的主干课程之一,是一门理论性、实践性很强的专业课。本作业集以《房屋建筑学》教材为主线,结合作者多年的教学经验和成果,编写了多种典型习题及模拟考试题,旨在帮助学生抓住课程重点,巩固和提高学生解题和应试能力。
  • 决胜中考招招灵

    决胜中考招招灵

    在每个人的人生道路上,总会有几个重要的人生关口。在初中阶段,一个最大、最重要的“坎儿”,就是中考。望子成龙是许多家长共同的目标,为了使孩子能拥有良好的修养、光辉的前程,能立足于未来竞争越来越激烈的社会,即使中考只是建立在九年义务教育基础上的选拔性考试,但对家长来说,中考却是孩子人生的第一个转折点,是一次非常重要的考试。对此,一位家长这样说道:“如今,高考门槛降低了,录取率逐年增高,对于考生年龄又放开了,年纪再大也能考,机会很多。可中考就不一样了,一锤子买卖,考砸了,也没有什么补救的机会。所以,一定要帮孩子把好中考关。
  • 花开是最好的借口:执著是一种心态

    花开是最好的借口:执著是一种心态

    本书内容分为六个部分,介绍了很多生活和处事的哲学。内容包括:开在心灵深处的花;有月光,我们就不慌;不要等到机遇的柿子成熟;整只整只的忧伤;微喇的时光;有一种爱像海绵等。
  • 让青少年学会诚实守信的故事

    让青少年学会诚实守信的故事

    本书是根据教育部颁布的《中小学生守则》以及《中小学生日常规范》相关内容编写的一部用来增强学生诚实守信观念,适合在校青少年阅读的故事选集。
  • 小学生好词好句好段

    小学生好词好句好段

    很多小学生在写作文时,不知道从何入手,总感觉词汇贫乏、辞难达意,花费半天工夫才挤出的几行字却永远都是“口水话”“流水账”,好比茶壶里煮饺子——心中有数,就是倒不出来。出现这种情况,主要是脑海里的作文素材库储备不足。我们都知道,构成一篇作文的基本元素是词、句、段,要想写出一篇好的作文,就必须培养词汇积累、遣词造句、连句成段、连段成篇的能力。
热门推荐
  • 银耀琉璃境

    银耀琉璃境

    安远小村出来的男孩儿,遭逢巨变之后迅速成长。原来我不是亲生的?养母也不是普通村妇?凭什么能被选中亲传弟子,为什么天资不错的梁子安连最基本的心法都比别人慢。养父母的大难还隐藏着阴谋。没关系,尽管千难万阻,梁子安还能打开血脉之力,逐渐解开身世之谜,习得高阶功法,逍傲琉璃大陆。人性可能没有想得那么美好,但是一路上,子安还是收获了友情和爱情。这是一个成长的故事,热血的故事。看看安静偏远的安远村里,出来的小男孩如何成长,让所有看不起他的人臣服,伤害过他的人终将收到惩罚!
  • 跟孩子一起玩吧:家庭教育中的游戏经典

    跟孩子一起玩吧:家庭教育中的游戏经典

    为了建立一种自然而合理的教育方法,必须把人作为个体进行大量精确而合理的观察,重点是观察一个人幼年时期的情况,因为这段时期是奠定一个人教育和文化基础的年龄。
  • 古城女子的命运

    古城女子的命运

    在古代有些古城的公主因事故而陷进时间回轮,时间因此改变来到了现实的社会,她会怎么样呢,请观看
  • 白鼠梦

    白鼠梦

    明哥说过,写小说不是为了钱,而是在小说中活成自己想象的生活。初三很烦躁,我靠小说来打发时间而已。不喜勿喷,谢谢。
  • 我的女友上官婉儿

    我的女友上官婉儿

    我叫张有才,人人都夸我有才,有才到现在美女皆看不上,娶了个千年前的女友——
  • 青春亮

    青春亮

    我以为自己可以做到一切不为所动,可自从遇见你之后全都变了。高兴难受流泪。
  • 倾城一笑独宠狂妃舞碧天

    倾城一笑独宠狂妃舞碧天

    身姿瞬转,霸气举枪,那是曾经的她。而如今,她是尚书府唯一的嫡女,傻子、瞎子、草包、废材...全部都是她的标签。懦弱草包太子妃投湖身亡,而再次苏醒的少女却惊艳连连。恶毒庶兄姐妹,心机姨娘...统统给本姑娘靠边站!天赋逆天,亮瞎一帮狗眼。而他,皓云的曜王陛下,冷漠、淡然、残暴...独独因她倾城一笑,乱了心。十指相扣,生死相依。一双手,带她走过大千世界,一双眼,看他守护她的一切。上至碧落下黄泉,生生世世恋佳人!看她如何睥睨天下,雄霸四方。
  • 封神证道录

    封神证道录

    申公豹为何要处处跟姜子牙作对?神秘又强大的陆压到底是什么身份?闻仲到北海平叛,为何一连十几年不能成功?纣王为何对狐狸精言听计从,滥杀忠良?封神中的天数究竟是什么,通天教主能不能预判到截教的结局?......如果封神中的一切,并不是简单的巧合和天数,又该怎么解读呢?
  • 政治经济学基础

    政治经济学基础

    作为一本探索与创新的教材问世了。本书以马克思主义经济学为基础,借鉴西方经济学的精华,系统阐述了政治经济学的起源与发展历程,分析了政治经济学对中国社会经济体制建立的重要意义及显著作用。本书以商品、商品经济与市场经济为切入点,以市场经济条件下社会再生产各环节为主线,阐述了商品的生产、流通、分配及消费关系,阐明了商品经济及市场经济条件下市场失灵时的宏观调控。
  • EXO之不愿错过的爱

    EXO之不愿错过的爱

    【小说原创】我是奚染,今年22岁。他是边伯贤,边氏集团总裁,也是今天这场婚礼的新郎,而我是这场婚礼的新娘。“这新郎怎么还不来啊?”眼看着婚礼马上开始,妈妈开始焦躁不安。“这臭小子,拿这当儿戏吗?”边老太爷气得那只拿拐杖的手抖得不停。“不用等了,上场吧。”这场闹剧的婚礼,在没有新郎的情况下,依旧按时开始。而新郎,却在他们的新房内与另一个女人在温存......