基于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();
  }

}

时间: 2024-08-03 05:33:58

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

怎样发布基于MS SQL Server的程序

很多朋友在编写完成基于SQLServer的程序后对发布程序感到头疼,因为仅仅发布应用程序和BDE是不够的,必须要安装SQLServer Client软件,难道还要提供一张SQLServer的光盘?下面jojo为大家介绍一个解决之道: 1.准备一份Install Shield Express,最好是2.01以上的版本,在Delphi的安装盘上有一个专用版本也可以用,按照制作一般程序安装盘的方法建立安装程序,必须安装BDE和SQL LINKS. 2.在你的Windows\System下面找到以下几个

MS SQL Server查询优化方法(1)●查询速度慢的原因很多,常见如下几种:

server|速度|优化 MS SQL Server查询优化方法(1) ●查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源.9.返回了不必

MS SQL Server 对文件内容进行全文检索的查询

server|全文检索   因为项目需要,需要对上传的文件内容进行查询.通过MSDN了解到Windows索引服务可以实现对文件的全文检索,并可以通过SQL Server进行查询.项目将这两者结合,实现对上传文件的全文检索的解决方案.方案概要:1.  改变文件存储时的文件名2.  配置索引服务器,并将索引服务器与MS SQL Server关联.3.  修改SQL语句,将进行全文查询语句的内容加入查询条件中 文件的存储方式:为了方便存储以及方便索引,我们将上传的文件存储到一个目录里面,为了保证上传的

SQL Server 使用全文索引进行页面搜索

原文:SQL Server 使用全文索引进行页面搜索 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/全文索引 概述   全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询.全文索引将有关重要的词及其位置的信息存储在数据库表的一列或多列中.全文索引是一种特殊类型的基于标记的功能性索引,它是由 SQL Server 全文引擎生成和维护的.生成全文索引的过程不同于生成其他类型的索引.全文引擎并非基于特定行中存储的值来构造 B 树结构,而是基于要编制索引的文

MS SQL Server数据库查询优化及分页算法

server|分页|数据|数据库|算法|优化 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构:CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE

Web环境下MS SQL Server中数据的磁带备份与恢复

server|web|备份|恢复|数据 摘 要:介绍了磁带数据备份及恢复的工作过程,包括在硬盘上建立了一个与磁带的容量相当的数据库,即桥数据库和在Web信息系统中要实现完整的磁带数据备份及恢复功能.从理论与实践上阐述了如何利用SQL中现有的数据库备份和恢复的命令以及NT中的IDC技术. 关键词:Web信息系统:磁带数据备份:桥数据库:IDC文件:数据恢复 1 引言 实现磁带备份数据的功能有两方面的困难:首先,MS SQL Server(以下简称SQL)所提供的数据库的整体备份及恢复功能不能直接满

了解MS SQL Server 2000视图

视图的好处,它可以横纵分割表,在视图上的可以执行与在表上一至的操作,如:Insert.Update.Delete.这些操作与在表上的相应操作大至相同,不过也有些不同之处.在视图上进行操作的列是只属于视图的列,这些列不一定包含对应表中的所有列,所以在执行Insert操作或Update操作时,如果视图中有未被包含的列,并且这些列是Not NULL的,那么在视图上执行相应的Insert操作或Update操作时就会失败,还有在视图上如果使用了Group By.Distinct等操作时,不能执行Inser

Oracle\MS SQL Server Update多表关联更新

原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表   一.MS    SQL    Server   多表关联更新      sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就

SQL Server 2008 全文索引页面搜索实例教程

最近要开发一个类似搜索引擎的检索,在一个100万的表中通过关键字对一个大型字符字段进行查询,查询出所有包含关键字的数据并进行分页处理,并且将匹配度最高的数据排在第一位,要求查询响应时间控制在1秒左右.这么大的数据量要在短时间内响应,我们采用SQL Server 2008 全文索引. 测试环境:SQL Server 2008 r2 全文索引概念 全文索引是针对数据表,只能对表创建全文索引,不能对数据库创建全文索引. 每个数据库可以不包含全文目录或包含多个全文目录,一个全文目录可以包含多个全文索引,