登陆注册
19122000000030

第30章 Windows索引服务实现全文搜索(1)

本章要点

Windows索引服务可以实现对文件的全文搜索,如果使用Windows服务器来架设搜索引擎,这是一个可选的方案。本章介绍如何基于Windows索引服务来架设全文搜索引擎。

7.1Windows索引服务的基本应用

7.1.1Windows索引服务的基本原理

Windows索引服务的工作原理是:Windows对指定的路径内的文件执行全文索引,然后再执行全文搜索。Windows索引服务的使用非常简单。

索引服务提供用于几种流行文件格式(如Microsoft Word、Microsoft Power Point、Microsoft Excel和HTML)的筛选。筛选还可用于纯文本。用户和第三方供应商也可以编写用于其他格式的筛选。筛选的一个目的是对非纯文本文档提供支持,另一个目的是从文件内容获取属性值,以及获取关于文件的属性值。

文件系统检索的全文索引是通过扫描文件的内容创建的。该过程包括跟踪所使用的重要单词及其所在的位置。例如,全文索引可以指示在给定文件的第227、473、1017个单词处找到了单词Canada。此索引结构支持对包含索引单词的所有项进行高效检索,以及进行高级检索操作,如短语检索和邻近检索。例如:查找“white elephant”,其中的white在elephant前面,这是短语检索;查找其中的big出现在house附近的短语,这是邻近检索为了防止全文索引因包含很多对检索没有帮助的词而变得臃肿,干扰词(如a、and和the)都被忽略不计。

索引服务提供了许多语言的干扰词列表,而且所支持的语言集也在增长。在筛选过程中,选择哪个干扰词列表取决于资料的语言,而该资料依赖于文件格式——有些文件按部分(例如,按段落)进行语言设置,而有些作为文档的属性指定语言设置。对于大多数标准操作,这些干扰词列表应该足够了,但是也可以用文本编辑器进行修改,以用于特定的环境。

索引服务在文本检索目录中存储索引和属性值。默认情况下,在安装索引服务时会创建名称为Web的文本检索目录。一个给定的文本检索目录引用一个或多个IIS虚拟目录(也称为虚拟根目录),一个虚拟目录引用一个或多个物理目录,以及(可选的)其他虚拟目录。在真正的文件通过虚拟目录链接到文本目录之后,将会通知索引服务必须对哪些新文件进行索引,于是索引服务开始对与这些文件相关的属性和内容进行筛选和索引。以后如果要对这些文件进行任何更改,都会通知索引服务,索引服务会对更新的文件重新筛选并重新建立索引。

7.1.2Windows索引服务的基本使用

下面的例子演示对一个文件夹内的所有文件建立全文索引,然后执行搜索。

首先,鼠标右键单击“我的电脑”图标,从弹出的快捷菜单中选择“管理”。

然后在打开的“计算机管理”窗口中找到“索引服务”节点,这就是我们需要使用的Windows索引服务。

笔者在E:docs目录下存放了一些Word文档(也可以掺杂HTML等格式的文档)。现在,要做的是对这些文档执行全文搜索。

在“索引服务”节点处,单击鼠标右键,从弹出的快捷菜单中选择“新建”中的“编录”选项,弹出“添加编录”对话框,在其中输入编录的“名称”和“位置”。这里输入名称为“tianen”,输入位置“E:docs”。

单击“确定”按钮,系统将弹出提示对话框,提示编录已经创建成功。

在提示对话框中单击“确定”按钮。这时可以看到在E:docs目录下有一个名为“catalog.wci”的目录出现,这是一个隐藏目录。

然后,在刚刚建立的编录“tianen”节点下面找到“目录”节点,单击鼠标右键,在弹出的快捷菜单中依次选择“新建”中的“目录”选项。

弹出“添加目录”对话框,在其中设定路径为“E:docs”,然后单击“确定”按钮。

在“计算机管理”窗口中单击“索引服务”节点。在上方的工具栏中单击“启动”按钮,启动索引服务。如果原本就处于启动状态,就先“停止”,然后再启动。

这时,查看E:docscatalog.wci目录,可以发现里面新增了许多文件。这些文件就是建立的索引文件。

在“tianen”节点处,选择其子节点“查询编录”,将显示出查询表单,在其中输入关键词,单击“搜索”按钮,即可显示搜索结果。如果搜索“女娲”,显示出了“后土.doc”文件,这就说明系统执行了全文搜索。

从“索引服务查询表格”输入的查询,一般情况下不限制文本格式。要使用索引服务查询语言的高级功能,可以单击“高级查询”,允许查询特殊的属性并受益于查询语言的强大功能,如分量、向量和布尔查询。

7.1.3索引服务的性能的基本调整方法

下面介绍一些简单的方法,可以对索引服务的性能进行调整。

在“计算机管理”窗口中,用鼠标右键单击“索引服务”,在弹出的快捷菜单中依次选择“所有任务”和“调整性能”。

弹出“索引服务用法”对话框,在其中选择“自定义”,然后单击“自定义”按钮。

弹出“所需性能”对话框,在其中将“索引”和“查询”的移动滑标移动到最右边。这样,索引服务将消耗最多的系统资源,但是具有最好的性能。

7.2Windows索引服务与SQL Server数据库的联合使用

7.2.1将索引服务和SQL Server数据库关联

索引服务包括用于Microsoft索引服务的Microsoft OLEDB提供程序。此提供程序可用来对非数据库文件进行全文索引或属性值搜索。可使用sp addlinkedserver完成链接服务器定义,并使用SQL Server企业管理器进行安全设置。然后,分布式查询可引用提供程序以检索索引信息。

创建链接服务器以访问索引服务全文索引的方法如下面的例子所示。

若要创建名为tianen Index的链接服务器服务访问名为tianen的全文索引(就是刚才建立索引编录的名字),执行如下语句:

sp addlinkedserver tianen Index,"Index Server","MSIDXS","tianen"

现在,就可以在SQL Server中执行搜索了。执行下面的语句:

SELECT Q.*

FROM OpenQuery

——链接服务器名

tianenIndex,

——搜索语句

"SELECT FileName,Size,DocAuthor,path FROM SCOPE()WHERECONTAINS(""女娲"")′

)AS Q

这里要注意,在CONTAINS子句后面的括号中,关键词左右两侧是两个单引号,而不是双引号。

7.2.2基于索引服务的Web应用

现在,我们开发一个Web应用。实现的原理很简单:向SQL Server中提交语句,然后由SQL Server返回数据即可。使用的技术是ASP.NET1.1(基于VB.NET)。

案例名称:基于索引服务的Web应用

程序名称:tianenIndex.aspx

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.SqlClient"%>

< language="VB"runat="server">

Sub Page Load(SenderAs Object,EAs EventArgs)

Dim connAs New SqlConnection("server=localhost;database=pubs;uid=sa;pwd=;")

dim sqlAs String="SELECT Q.* FROM OpenQuery(tianenIndex,"SELECT FileName,

Size,DocAuthor,path FROM SCOPE()WHERECONTAINS(""女娲"")")AS Q"

Dim cmdAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

try

conn.Open()

dr=cmd.ExecuteReader()

while dr.read

response.write(dr("filename")&;"——"&; dr("size")&;"——"&; dr("path")&;"

<br>")

end while

catch ex as Exception

response.write("出错了!")

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

</>

上面例子只为说明原理。下面在其基础上进行改进,增加一个搜索栏。

案例名称:基于索引服务的Web应用

程序名称:tianenSearcher.aspx

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.SqlClient"%>

< language="VB"runat="server">

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

Dim connAs New

SqlConnection("server=localhost;database=pubs;uid=sa;pwd=;")

dim sqlAs String="SELECT Q.* FROM OpenQuery(tianenIndex,"SELECT FileName,

Size,DocAuthor,path FROM SCOPE()WHERECONTAINS("′"+so.Text+"′")")AS Q"Dim cmdAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

try

conn.Open()

dr=cmd.ExecuteReader()

while dr.read

response.write(dr("filename")&;"——"&; dr("size")&;"——"&; dr("path")&;

"<br>")

end while

catch ex as Exception

response.write("出错了!")

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

</>

<FORM id="Form1"method="

post

"runat="server">

<asp:textbox id="so" runat="server"/> ;

<asp:button id="Button1"runat="server"Text="搜索"OnClick="Button1Click"></asp:

button><BR>

</FORM>

在搜索栏中输入“女娲”,单击“搜索”按钮。

7.3一个完整的应用

7.3.1建立索引编录

在讲解了相关理论并作了测试之后,现在提供一个完整的应用。

建立E: est文件夹,放入若干文件。

使用Windows索引服务建立编录,名为“test”(这个名字是任意的,不需要与前面提到的文件夹名字相同),使其路径为“E: est”文件夹。

在刚刚建立的编录test下面添加一个目录,设定目录路径为“E: est”。

在“计算机管理”对话框中单击“启动”按钮,启动索引服务。

单击“查询编录”节点,在搜索页面中,搜索“共工”,可以看到搜索结果,这说明索引建立成功了。

7.3.2Web搜索

前面已经说明了使用SQL Server作为媒介来实现Web页面搜索的方法,这里就不重复了。

显然,如果读者的服务器上有SQL Server,那无疑是很好的,已经可以建立全文搜索引擎了。

这里要介绍的系统,并没有采用SQL Server作为媒介。没有SQL Server,也可以实现Web全文搜索引擎。

首先,要做一些准备工作。在“索引服务”下面的“test”节点处单击鼠标右键,在弹出的快捷菜单中选择“属性”。

弹出“test属性”对话框,在“生成”选项卡中选择“生成摘要”复选框,这样将使搜索出来的结果可以含有文章内容的摘要。

然后,在“跟踪”选项卡的“WWW服务器”下拉菜单中选中“默认网站”。

同类推荐
  • 中级财务会计学

    中级财务会计学

    本书是根据我国会计师职称考试“会计学”大纲和注册会计师“会计实务”大纲,结合我国《企业会计准则》,吸纳其会计革新的内容编写而成。对于《国际会计准则》和国外发达国家会计准则中在未来可能引入我国的理论及技术方法,本书也作了介绍。本书适合作为会计、财务本科专业的教材,也可以作为经济管理其他相关专业、会计师职称考试和注册会计师考试的教学、培训用书。
  • 哈佛最神奇的24堂家教课

    哈佛最神奇的24堂家教课

    本书综合了古今中外众多的名人家教成功经验,如卡尔·威特、比尔·盖茨、肯尼迪、林肯、爱因斯坦、罗斯福等,并吸收了很多教育专家对现代家庭教育的指导和意见。书中或以教育小场景揭示家教盲点,或通过成长小故事给人启迪,同时加上深刻的分析,相信定能让你茅塞顿开。
  • 智慧教育活动用书-思绪如风

    智慧教育活动用书-思绪如风

    “智慧教育活动用书”丛书公共30册,是一套汉语与英语的双语丛书。丛书内容包括星宇迷尘、科普长廊、网络生活、网络前沿、电脑学堂、心灵密码、健康饮食、生命律动、体坛经纬、影视千秋等30个方面。智慧教育即教育信息化,本套丛书把比较前沿的信息教育化,在学习科技知识的同时也加强了英语的阅读能力。
  • 广告策划与品牌管理

    广告策划与品牌管理

    本书包含认知广告、设计广告战略、分析消费者广告心理、广告创意策划、创造广告文案、广告媒体选择与投放、广告预算与效果评估、品牌管理等十个任务。
  • 声律启蒙(语文新课标必读书目·第12辑)

    声律启蒙(语文新课标必读书目·第12辑)

    世界文学名著是世界各国社会和生活的结晶,是高度艺术化的精神产品,是人类共有的文化财富,具有永久的魅力,非常集中、非常形象,是中、小学生了解世界和社会的窗口,是走向世界、观摩社会的最佳捷径,也是培养人文素质,养成优雅风度,形成高尚思想品格的好教材。这些世界文学名著,伴随着世界各国一代又一代的青少年茁壮成长,具有广泛的影响和深远的意义。特别是带着有趣的欣赏的心态阅读这些美丽的世界名著,非常有利于培养青少年积极的和健康向上的心理、性格、思维和修养,有利于青少年了解世界各国的社会和生活,不断提高语言表达和社会交往的才能,这样就可以早日走向社会,走向世界。
热门推荐
  • 部长大人请别走

    部长大人请别走

    他的离开使她丧失爱人的能力。五年后,她鼓起勇气接受追求者的邀约时,却阴差阳错被送到了他的床上。看着她媚态尽显的躺在他床上,他一步步走近……“没想到你会如此堕落”,他吻向她的嫣红。当一切真相大白,她知道了他另一重身份。当准备表白和他在一起时,发现他爱上了别人并即将结婚。面对失踪多年的他,面对藏在心底多年的他,她该何去何从?顾晓清说:“干脆我们直接抢婚。”梅梅说:“将生米煮成熟饭,还怕他不要你。”可可说:“要不你睡了他就走吧。”她……
  • 相思如卷耳

    相思如卷耳

    这些故事我想了很久,终于可以讲给你听。我希望他们能带给你温暖和笑容。当你看完后,不自觉的上扬一下嘴角,或者轻叹一下,这样就已足够
  • 小窍门改变大生活

    小窍门改变大生活

    全面介绍生活中经常接触的小窍门,力求囊括必备的常识和技能、行之有效的解决方案、简单易行的窍门点拨,可以作为家庭日常生活枕边书。生活中充满了各式各样的小窍门,运用这些窍门就能为您节省不少时间和精力。
  • 王子相对论:男佣日记

    王子相对论:男佣日记

    一个是落魄贵公子,一个是无敌拜金女。当贵公子变身成为新家佣,拜金女又该如何接招?而面对冷漠少爷的处处刁难,她又能否化险为夷?嘻嘻,她可是无敌的!
  • 武至巅峰之神武通灵

    武至巅峰之神武通灵

    这是一个属于武者的世界,最不缺少的就是强者。叶飞,生在了这个大陆,却在远离纷扰的黑若镇的孤儿院长到了十四岁。从未接触武道,却是天赋异禀。知道海怪侵袭打破了这个小镇的宁静,也夺走了叶飞唯一的亲人。终于觉醒了体内沉睡力量的叶飞意识到了弱小便是罪过,从此踏上成为强者的道路。天纵奇才的体质,以及沉睡在体内的通灵之力,再加上高人的指导?好吧,足够他成为强者了什么,还不够?还要打灵兽,通灵炼魂,合成高级丹药?那他只有称霸这片大陆百战成神
  • 史上最菜穿越者

    史上最菜穿越者

    小扑街方云只想安静地写小说,未曾想也有撞大运的一天,居然获得了穿越的能力。从此,坑日战场上给小鬼子背后来一枪,历史的车轮给狠狠踹一脚,武侠世界里体会快意恩仇,仙侠玄幻中寻宝问道,灵异世界……好吧,我能说我怕鬼吗只可惜,便宜没好货,更何况是天上掉下的不要钱的馅饼获得的宝物居然不能带到现实世界?辛苦修炼的功力也将化为乌有?就连关键的记忆也不能带走?那我穿越还有什么意义!吃饱了撑的!什么,我在各个世界的所作所为都被写成了小说,发表小说,获得读者认可将会获得兑换点,兑换本就应该属于我的东西。世界太复杂,我只想安安静静的写小说,呜呜(无限流、文娱向)
  • 豪门似海:恋上泡沫公主鱼

    豪门似海:恋上泡沫公主鱼

    【蓬莱岛】一个是漫画王子般绝美的混血少年,一个是相濡以沫自小收养她的万人迷老哥,一个是豪门贵少,一个是草根影帝,一个情深似海,一个痴恋成灾,看两个优异的男子为了争夺女主如何大打出手各亮奇招,哎呀呀,犹豫徘徊彷徨优柔滴女主哇,敢问你到底要选择哪一个?
  • 学习爱

    学习爱

    心灵导师的智慧之语,如同涓涓细流,流入每个人的心田,温暖而有力量,帮助困惑在路上的人们拨开情感迷雾,找到真实的自己和幸福。
  • 神级掌门

    神级掌门

    穿越到异界,成了一个落魄掌门!啊哈!掌门系统降临,本以为会牛逼,却没想到.......建筑卷轴要点卷啊,各种丹药要点卷啊,心法要点卷啊,法器要点卷啊。低等宗门,处处被人挤压,遭人冷眼,江离感觉压力山大啊。但忽然间,江离发现自己的游戏点卷,居然有1000000000000,啥!一万亿点卷。我擦嘞!来吧,召唤神级英雄,刷新顶级心法,培养青龙白虎朱雀玄武麒麟几十头。招将阁?普通黄巾军?不要,顶级英雄?不要?就要神级英雄,啥萧炎,洪易,德玛西亚,堕落天使,孙悟空,诸葛亮!称霸异界,从成为土豪掌门开始。【梦想杯投票,在下面!!!!!!!投票者,每天都会萌萌嗒。】
  • 鼠辈志

    鼠辈志

    本书皆以真实人物故事改编,讲述社会底层小角色摸爬滚打。主角一生经历坎坷离奇,大半生徘徊与正邪善恶之间。