登陆注册
19122000000018

第18章 SQL Server的全文搜索(5)

重复刚才的上传文件的过程,上传多个文件。

3.建立全文索引

下面对tianenImage的test表的fcontent列进行全文索引。由于它的类型是image,所以建立全文索引的方式与普通的字符串类型不同。

使用SQL语句来实现建立索引的方法如下所示:

——启用全文支持

use tianenImage

Exec sp fulltext database"enable"

——创建全文目录

Exec sp fulltext catalog"imageCatalog","create"

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

Exec sp fulltext table"test","create","imageCatalog","PK test"

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

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

——激活全文索引

Exec sp fulltext table"test","activate"

——执行全文目录的填充

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

这里要注意黑体标注的语句。在SQL Server中,要对image类型列进行全文索引,就需要给它绑定一个列来标识类型。微软让我们采用扩展名的方式,其实不是很科学。想要标识一个文件的类型应使用MIME类型或者CLSID才可以。扩展名是很不准确的。

在查询分析器中执行了上面的SQL语句之后,就可以对fcontent列执行全文搜索了。运行以下语句:

use tianenImage

select*from test where contains(fcontent,′"大禹"")

那么,刚才的过程,如果使用企业管理器可视化操作,应该如何去做呢?

在企业管理器中,右键单击test表,从弹出的快捷菜单中依次选择“全文索引表”和“在表上定义全文索引”,打开“全文索引引导向”。

单击“下一步”,在“选择索引”对话框中选择唯一索引“PK test”,单击“下一步”。

在弹出的“选择表中的列”对话框中选择“fcontent”列用于全文检索,在“单词断字符的语言”列中选择“中文(中国)”,在“文档类型”列选择“fext”,这样就把两个列绑定到一起了。

单击“下一步”,在弹出的“选择目录”对话框中设置新建目录,名称为“imageCatalog”。

单击“下一步”,略过“调度”的设置,单击“完成”按钮完成全文索引的建立。

系统弹出成功建立全文索引的提示信息,单击“确定”。

在企业管理器中,右键单击tianen Image数据库的test表,从弹出的快捷菜单中依次选择“全文索引表”和“启动完全填充”即可实现完全填充。

4.8综合案例

4.8.1概要说明

本章的最后一个案例,将综合使用本章所学知识,开发一个在线文件管理系统。系统具有这样的功能:

上传文件到数据库中;

对二进制文件进行全文搜索;

可以将文件显示和下载;

可以查看系统中已经上传的文件。

在这个案例中,我们建立一个工程项目。使用的技术是ASP.NET1.1(基于VB.NET)+SQL Server2000。

工程包含三个文件,web.config用于存储数据库连接串;save.aspx是系统主界面,也用来上传文件;show.aspx用来提取数据库中的二进制数据并显示出文件。

4.8.2数据库结构

系统的数据库名为“love”,在这个数据库中建立一个表格,名为“yuanyuan”,其中含有五个字段。

id为int类型,自动增长,是表格的主键,主键约束名为loveyuanyuan。

fname为varchar(20)类型,是上传文件的名称。

ftype为varchar(20)类型,是上传文件的MIME类型。

fext为varchar(20)类型,是上传文件的扩展名。

021做自己的搜索引擎——搜索引擎精解案例教程fcontent为image类型,存储上传的文件。

通过在查询分析器中运行下面的SQL语句可以建立完成数据库。

create database love

use love

create table yuanyuan

id int identity(1,1)not null,

fname varchar(20)not null,——file name

ftype varchar(20)not null,——file MIME type

fext varchar(20)not null,——file extension

fcontent image not null,——file stored here

constraint loveyuanyuan primary key(id)

4.8.3程序和代码

web.config的代码如下:

<?xml version="1.0"encoding="gb2312"?>

<configuration>

<appSettings>

<add key="dsn"value="server=localhost;uid=sa;pwd=;database=love;"/>

</appSettings>

<system.web>

<trace enabled="false"/>

<compilation defaultLanguage="vb"debug="false"/>

<customErrors mode="RemoteOnly"/>

<authentication mode="Windows"/>

<authorization>

<allow users="*"/><!——允许所有用户——>

</authorization>

<identity impersonate="true"/>

<sessionState timeout="60"mode="InProc"cookieless="false"/>

<globalization requestEncoding="gb2312"responseEncoding="gb2312"/>

</system.web>

<startup>

<requiredRuntime version="v1.1.4322"/>

<supportedRuntime version="v1.1.4322"/>

</startup>

</configuration>

save.aspx的代码如下:

Imports System.Data

Imports System.Data.SqlClient

Imports System.IO

PublicClass save

Inherits System.Web.UI.Page

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

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

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

End Sub

Protected WithEventsDGAs System.Web.UI.WebControls.DataGrid

Protected WithEvents Form1As System.Web.UI.HtmlControls.HtmlForm

Protected WithEventsButton1As System.Web.UI.WebControls.Button

Protected WithEvents upAs System.Web.UI.HtmlControls.HtmlInputFile

Protected WithEvents lAs System.Web.UI.WebControls.Label

Protected WithEventsButton2As System.Web.UI.WebControls.Button

Protected WithEvents inputAs System.Web.UI.WebControls.TextBox

"注意:以下占位符声明是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

′在此处放置初始化页的用户代码

BindGrid()

End Sub

SubBindGrid()

Dim connAs New SqlConnection(ConnStr)

Dim commAs New SqlCommand("select*from yuanyuan",conn)

Dim drAs SqlDataReader

Try

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

Private SubButton1Click(ByVal senderAs System.Object,ByVal eAs System.EventArgs)

HandlesButton1.Click

Dim fnameAs String=Path.GetFileName(up.PostedFile.FileName)

Dim ftypeAs String=up.PostedFile.ContentType

Dim fextAs String=Path.GetExtension(up.PostedFile.FileName)

Dim fcontent(up.PostedFile.ContentLength)AsByte

up.PostedFile.InputStream.Read(fcontent,0,up.PostedFile.ContentLength)

Dim connAs New SqlConnection(ConnStr)

Dim commAs New SqlCommand("insert into yuanyuan(fname,ftype,fext,fcontent)values

(@ fname,@ ftype,@ fext,@ fcontent)",conn)

comm.Parameters.Add("@ fname",fname)

comm.Parameters.Add("@ ftype",ftype)

comm.Parameters.Add("@ fext",fext)

comm.Parameters.Add("@ fcontent",fcontent)

Try

conn.Open()

comm.ExecuteNonQuery()

Dim tempAs String

temp="file name:"& fname

temp &="<br>file type:"& ftype

l.Text=temp

BindGrid()

Catch exAs Exception

l.Text=ex.Message

Finally

If Not conn Is Nothing Then

conn.Close()

End If

End Try

End Sub

Private SubButton2Click(ByVal senderAs System.Object,ByVal eAs System.EventArgs)

HandlesButton2.Click

Dim soAs String=input.Text.Trim

Dim sqlAs String="select* from yuanyuan whereCONTAINS(fcontent,′"""& so &"""")"

同类推荐
  • 构建三座立交桥——绵阳师范学院办学模式研究与实践

    构建三座立交桥——绵阳师范学院办学模式研究与实践

    “三座立交桥”办学模式已经走过了四个春秋,它的实施提高了我校的办学实力和办学质量,提升了我校的品牌形象。我们相信,随着“三座立交桥”办学模式的深入研究和逐步运用,绵阳师范学院必将在全方位的对外交流中获得迅速发展,在不久的未来必将会成为一所特色鲜明、优势突出、管理规范、知名度高、适应社会发展需要的,以文、理、工、教育、管理五大学科门类为主的教学型大学。
  • 实用一生的语言精华丛书:校园实用经典励志哲言

    实用一生的语言精华丛书:校园实用经典励志哲言

    《实用一生的语言精华丛书:校园实用经典励志哲言》是一本科普类读物。歇后语、座右铭、格言等无疑都是一种浓缩的语言精华,可能经过千百年来人们的不断提炼和传承,才得以流传至今。《实用一生的语言精华丛书:校园实用经典励志哲言》主要内容包括经典励志、趣味哲言等语言精华。集趣味性和知识性于一身,可以作为广大青少年朋友修身养性、努力学习的一个指路明灯。
  • 初中生如何有效地提高学习成绩

    初中生如何有效地提高学习成绩

    本书包括五段学习法:各学科学习的共同技巧;语文实用学习法;数学实用学习法;英语实用学习法;培养浓厚的学习兴趣与良好的学习习惯等内容。
  • 中学化学课程资源丛书-走近化学前沿分支

    中学化学课程资源丛书-走近化学前沿分支

    作为科学教育的重要组成部分,新的化学课程倡导从学生素质的培养和社会发展的需要出发,发挥学科自身的优势,将科学探究作为课程改革的突破口,激发学生的主动性和创新意识,促使学生积极主动地去学习,使获得化学知识和技能的过程也成为理解化学、进行科学探究、联系社会生活实际和形成科学价值观的过程。本套丛书集知识性与实用性于一体,是学生在学习化学知识及教师在进行引导的过程中不可或缺的一套实用工具书。
  • 环境哲学

    环境哲学

    从哲学的视角观照环境问题,把环境问题纳入哲学的研究框架,重新审视人与自然的关系,建立关于环境问题的世界观,并以此指导和规范人类的行为。同时也探讨了人与自然和谐发展的理论问题及实现途径。
热门推荐
  • 魔王方程式

    魔王方程式

    从卑微到巅峰,脚下总是白骨累累,血流成河。这是一个小恶魔到大魔王的进化传奇。...【PS1:本文是恶魔果实和魔兽英雄技能的混搭,没看过《海贼王》、没玩过《魔兽争霸》都没关系,咱讲咱们自己的故事,走的通俗热血路线,你们会懂的。】【PS2:做人要厚道,看书要投票~~诸位的票票就是地瓜奋斗的动力啊。】
  • 人类生命科技发明发现(走进科学丛书)

    人类生命科技发明发现(走进科学丛书)

    本书包括生物大发明和其他科技大发明两大部分,其中包括针灸疗法的发明、显微镜的发明、牛痘术的发明、现代生物工程的建立、红外线的发现、电子管的发明与发展、传真机的发明以及信息高速公路的诞生等内容。
  • 女生闯男校:神秘女神来报道

    女生闯男校:神秘女神来报道

    她从小就是个药罐子,每天都在药堆里度过,从来都没踏出过家门,甚至连闺房都很少出。她向往着外面世界的生活,她真的已经厌倦了这种生活,厌倦了这日复一日,年复一年的生活,她想要脱离,真的很想!终于在她十七岁时,她恢复了“自由”,可是这所谓的自由便是换了个地方继续当这个笼中鸟,可她却不知道,因为她的到来,这里便发生了翻天覆地的变化。【一路樱花遍地满,来年相遇漫天飞】
  • 旋风少女续集之纯爱守护

    旋风少女续集之纯爱守护

    高冷且默默奉献的若白,遇上纯真且执着的百草,是什么,让他们决定在一起。看若白如何用父爱帮助百草战胜恐惧,重新回到元武道赛场。看初原如何尴尬回归,再次暖心百草看廷浩如何重磅出击,力挽百草芳心原版人物,再度热辣来袭,温暖你的整个暑假。接近原著,贴合中心,纯爱的新婚生活,就在这里!每天6章!支持在哪里?
  • 网游之神行天下

    网游之神行天下

    凌翎,本来是个只会玩游戏的刚毕业的大学生,浑浑噩噩的过着每一天。在克洛伊公司最新的网游力作《灵域》中,直至遇到了她,这才认清自己,咸鱼大翻身,屌丝逆袭。这才有了自己的梦想,有了自己为之奋斗的目标...。
  • 攻妻不备:老公的心尖宠

    攻妻不备:老公的心尖宠

    为了他,被逐出家门多年未见父母为了他,隐忍所有挑剔和侮辱却换不来一句承诺死心逃离他的身边,却让他明白了自己的心意。再次相见,她冷眸凝视,勾唇浅笑。他难掩激动,化身追妻忠犬。却多了一枚拦路小恶魔。“我是你爸爸!”男子放缓神色,试图抱住小人,眼睛却瞄着女子。小人儿红唇一勾,与男子相似的俩上带着甜美的笑容:“你是第一千一百一十一个这么说的人,想娶我妈咪,得拿出诚意来!”男子无奈一笑,手中的财产转让书递了上去。小人儿眼睛一亮:“通过!”男子扬起自信的笑容,他从来不打无准备的仗。然而,走进内室,脸色彻底变黑“第二百五十个人通过,这是你的号码牌”小人儿笑容灿烂的递上牌子,贼兮兮的笑了,想娶她妈咪,想得美!
  • 梦虫师

    梦虫师

    一颗陨石坠入地球,带来一种叫做梦虫的外星生物,它们在地球上产卵,沉睡在生物的大脑中,靠着汲取生物做梦时产生的能量生长。在火灾中生还的年轻小伙陆函意外发现了脑中孵化的梦虫卵,并与它的基因结合在了一起,获得了超凡的力量。在人们为了获得梦虫的异能而争抢时,越来越多的生物脑中的卵苏醒了,梦虫控制了地球上将近三分之二的生物,世界陷入了空前危机。到底是幸存的人类战胜梦虫,还是人类臣服在梦虫的统治下呢?跟随陆函一起来战吧!
  • LOL之我是谁

    LOL之我是谁

    我是谁?我知道掘墓人为何一生掘墓我知道阿木木为何会如此悲伤我知道沙皇为何会突然复活我,是谁?
  • 养鬼大师在异界

    养鬼大师在异界

    来自地球的养鬼邪术,面对异世界的亡灵魔法时。将会带来新一轮的风暴,大世界的高手强者们无不冷汗直流,隐藏在庞大骷髅大军中的无头饿鬼,会悄悄的从地下窜出咬掉你半边脑袋吹响地狱咆哮的号角,召唤来自深渊邪神的护卫。杀戮世间,屠戮天下。这,就是养鬼大师成为神经病后的唯一念头,明日城。这座千年前由八百万生灵尸骨所搭建起来的城池,将是他的大本营。当三千无头饿鬼炼制而成的时候,你!将会被加冕为“大师!”.......................有个书友群177720236欢迎各方豪杰前来共襄盛举!
  • 绝路

    绝路

    请相信,在爱情的世界里,天无绝人之路。