王朝网络
分享
 
 
 

基于MS Index Server 的全文索引实现

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

基于MS Index Server 的全文索引实现

作者:童振华

下载源代码

本人有个爱好就是看到网上好的文章就收藏起来。目前机器上有250M的文章了,并都已按时间,目录分类存放好。但是在查找时发现很不方便。所以想自己建一个全文索引的知识库。

在方案选择上有ms sql server的全文检索和index server可以用。为了做个决定,自己提出了如下需求。

要求知识库以后可以按时间,依目录拆分;

要求支持word,xls,txt,ppt,带图片的html;

可以扩展支持aspx,pdf;

需求分析:

对于以上两个问题,sql server好像不能很好的满足:

原因1:我要把硬盘上的文章导到数据库里,工作量很大。其次sql server差异备分=备分时刻与第一次的全备份的差异。如果有本次差异备分=第一次全备分+前N次备分那就好了。

原因2:由于很多文章是HTML的。带图片。放到sql server里就有个一对多的问题。解决不了。

原因3:全文检索的填充不能实时进行。

原因4:文章放到数据库image类型字段后,必须通过程序来查看。没有直接放在硬盘上查看方便。

所以最终选择index server.

过程:

(在这里我们取名KB,要索引的文章在D:\知识库\C#知识库,建成后的索引文件放在D:\KB)

启动Windows 2000 /XP上的索引;

缺省情况下选择图标位于管理工具组中的计算机管理。窗口的右边提供关于当前在服务器上

存在的索引信息。默认有两个索引:System和Web;

要创建新的索引,用鼠标右键单击索引服务或右边的面板,选定新建编录。

显示添加编录对话框,指定索引的名称并用浏览按钮选取位置。索引服务不会立即开始索引,此时将弹出一条消息框,单击确定继续。为了达到最佳的性能,索引服务可以放在和Web服务器隔离开的硬盘上

指定索引的目录,用右键单击新建的编录名,从弹出选单中选定属性,将出现如图2所示的对话框。第一个选项卡常规显示刚刚输入的内容,在第二个选项卡跟踪中的WWW服务器下拉列表中选取你要索引的Web网站

有了创建的编录,现在可以挑选你想在索引中包括的目录。

实现方法:

用index server其实用html页面就可以实现。参考C:\WINDOWS\Help\ciquery.htm 这是用activex 实现的。

在这里我采用C#和oledb来实现。

微软已经给我们提供了现成的oledb驱动来访问index server。其中PROVIDER=MSIDXS,具体哪些列可以选择,参看附录。private void BT_Search_Click(object sender, System.EventArgs e)

{

string constr="PROVIDER=MSIDXS;DATA SOURCE=KB";

OleDbConnection con=new OleDbConnection(constr);

try

{

OleDbCommand cmd=new OleDbCommand();

cmd.Connection=con;

cmd.CommandText="SELECT Rank,FileName, Create, Access, Path

FROM SCOPE()

where CONTAINS (''\""+TB_Text.Text+"\"'')";

OleDbDataAdapter da=new OleDbDataAdapter();

da.SelectCommand=cmd;

con.Open();

DataSet ds=new DataSet();

da.Fill(ds);

dataGrid1.DataSource=ds;

}

catch(Exception E)

{

Console.Write(E.Message);

}

finally

{

con.Close();

}

}

关于文档格式扩展。为了实现对aspx,apcx可以通过增中过滤器来实现。 例如对aspx,和ascx的索引可以在注册表中加以下注册项。[HKEY_CLASSES_ROOT\.aspx\PersistentHandler] ="{eec97550-47a9-11cf-b952-00aa0051fe20}"

[HKEY_CLASSES_ROOT\.ascx\PersistentHandler] ="{eec97550-47a9-11cf-b952-00aa0051fe20}"

对于pdf格式的过滤器在adobe的网站上也有。

附录

字段名 字段类型 说明

---------------------------------------------------------------------------

Access 日期/时间 上次访问文件的时间。

Characterization 文本/字符串 文档的特征或摘要。由索引服务器计算。

Create 日期/时间 文件的创建时间。

Directory 文本/字符串 文件的物理路径,不包括文件名。

DocAppName 文本/字符串 创建文件的应用程序的名称。

DocAuthor 文本/字符串 文档的作者。

DocByteCount 数字 文档的字节数。

DocCategory 文本/字符串 文档的类型,如备注、计划或白皮书。

DocCharCount 数字 文档中的字符数。

DocComments 文本/字符串 有关文档的注释。

DocCompany 文本/字符串 为其编写文档的公司的名称。

DocCreatedTm 日期/时间 文档的创建时间。

DocEditTime 日期/时间 编辑文档所花费的总时间。

DocHiddenCount 数字 PowerPoint 文件中的隐藏幻灯片数。

DocKeywords 文本/字符串 文档的关键字。

DocLastAuthor 文本/字符串 最近编辑过文档的用户。

DocLastPrinted 日期/时间 上次打印文档的时间。

DocLastSavedTm 日期/时间 上次保存文档的时间。

DocLineCount 数字 文档中包含的行数。

DocManager 文本/字符串 文档作者的管理者名称。

DocNoteCount 数字 PowerPoint 文件中带有注释的页数。

DocPageCount 数字 文档中的页数。

DocParaCount 数字 文档中的段落数。

DocPartTitles 文本/字符串 文档组成部分的名称。例如,在 Microsoft Excel 中,电子表格是文档的组成部分。在

PowerPoint 中,幻灯片是文档的组成部分。在 Word 中,包含在主文档中的文档的文件名是文档的组成部分。

DocPresentationTarget 文本/字符串 PowerPoint 演示文稿的目标格式(如 35mm、打印机、视频,等等)。

DocRevNumber 文本/字符串 文档的当前版本号。

DocSlideCount 数字 PowerPoint 文件中的幻灯片数。

DocSubject 文本/字符串 文档的主题。

DocTemplate 文本/字符串 文档的模板名称。

DocTitle 文本/字符串 文档的标题。

DocWordCount 数字 文档中的字数。

FileIndex 数字 文件的唯一标识。

FileName 文本/字符串 文件的名称。

HitCount 数字 文件中的匹配(与查询匹配的字词)数。

Path 文本/字符串 文件的完整物理路径,包括文件名。

Rank 数字 行的等级号。范围介于 0 到 1000 之间。数字越大,匹配率越高。

ShortFileName 文本/字符串 简短 (8.3) 文件名。

Size 数字 文件大小,以字节为单位。

VPath 文本/字符串 文件的完整虚拟路径,包括

文件名。如果有多个可能的路径,则选择与特定查询最匹配的路径。

Write 日期/时间 上次编写文件的时间。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有