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

WBOY
發布: 2016-06-07 15:03:44
原創
1289 人瀏覽過

本人有个爱好就是看到网上好的文章就收藏起来。目前机器上有250M的文章了,并都已按时间,目录分类存放好。但是在查找时发现很不方便。所以想自己建一个全文索引的知识库。 在方案选择上有ms sql server的全文检索和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)<br> {<br>   string constr="PROVIDER=MSIDXS;DATA SOURCE=KB";<br>   OleDbConnection con=new OleDbConnection(constr);<br>   try<br>   {<br>     OleDbCommand cmd=new OleDbCommand();<br>     cmd.Connection=con;<br>     cmd.CommandText="SELECT Rank,FileName, Create, Access, Path<br>       FROM SCOPE()<br>       where CONTAINS (''\""+TB_Text.Text+"\"'')";<br>     OleDbDataAdapter da=new OleDbDataAdapter();<br>     da.SelectCommand=cmd;<br>     con.Open();<br>     DataSet ds=new DataSet();<br>     da.Fill(ds);<br>     dataGrid1.DataSource=ds;<br>   }<br>   catch(Exception E)<br>   {<br>     Console.Write(E.Message);<br>   }<br>   finally<br>   {<br>     con.Close();<br>   }<br> <br> }

1 2  下一页

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!