当前位置:首页 > CN2资讯 > 正文内容

索引服务器作用 windows索引服务

8小时前CN2资讯


windows 系统调用.Windows索引服务.实列在Web访问索引服务
涉及技术

MSIDXS OLDB 驱动程序
取得扩展名对应的 mime 类型( 不知道文件的mime无法设置,Response.ContentType 无法实现下载功能 )
索引服务相关,知识及查询语句

编程背景(假设)

IndexServer 公司重199X 年起建立了一个文档共享服务器(ServerA) ,在此存放各种文档如word,pdf等
但由于现在文件存放过多导致,检索文件非常困难。

所以 IndexServer 公司需要在其共享文件服务器上快速检索、大家共享的文件并、提供Web,
检索下载界面。

编程需求

1. 实现对收藏文件,的全文检索(除了文本文件外还要有 office文件,pdf 等文件的检索功能)
2. 提供下载功能

分析

windows2000 开始ms提供了,索引服务、可以利用,不过默认是不支持 PDF 的。
网上有好多索引服务插件,可以下载可以解决 PDF 无法索引的问题、
如下地质 http://addins.china.msn.com/addins_category_desktop.aspx 就有,还可以用在MS桌面搜索中

步骤一

先学习如何配置索引服务

  • 打开开始菜单 管理工具 > 计算机管理
  • 打开 "服务和应用程序"
  • 在"索引服务"节点处,右键菜单 新建编录,会出现一个对话框
    名称:就是“编录”的名称了(任意输入)
    位置:存放索引文件的位置(选择即可)
    本列中:
    名称:IndexServer
    位置:I:\IndexServer
  • 这时“索引服务”节点,会出现一个 "IndexServer" 的子节点
  • 在 “IndexServer” 处右键、添加 > 目录;会出现一个对话框,添加要索引的 "目录" 在录入一个别名
    本列中:
    别名:Favorite
    路径:I:\QuBinDocs\Favorite\
  • 重新启动索引服务,在“索引服务”节点那里可以,在服务里设置也可以
  • 好了现在文档索引已经开始建立了,不过如果文件比较多的话会比较长时间
    还有,windows 默认是对全盘开 索引服务的,会占用很大空间,我个人习惯都删除了自己在配置
    自己需要索引的目录。

    建立完索引后如果是自己本机使用是不需要编程的,每一个 “编录” 会提供一个查询页面在“编录”的节点下就有

    步骤二

    开始实现编程、使任何人都可以访问了,其实很简单的

    界面效果(可以看出索引服务已经生效了)

    代码如下(下载的代码中有一些相关的资源在代码最后的地方)

    Web config 配置,编录名 < appSettings > < add key ="FileIndexName" value ="IndexServer" /> </ appSettings > ASP.net 页面 < body > < form id ="form1" runat ="server" > < div > < table > < tr > < td style ="width: 100px" > 查询编录 </ td > < td style ="width: 100px" > < asp:TextBox ID ="txtIndex" runat ="server" ReadOnly ="true" Text ="<%$ AppSettings:FileIndexName %>" ></ asp:TextBox ></ td > < td style ="width: 100px" >   </ td > </ tr > < tr > < td style ="width: 100px" > 查询词条 </ td > < td style ="width: 100px" > < asp:TextBox ID ="txtQueryText" runat ="server" ></ asp:TextBox ></ td > < td style ="width: 100px" > </ td > </ tr > < tr > < td style ="width: 100px" > </ td > < td style ="width: 100px" > </ td > < td style ="width: 100px" > </ td > </ tr > </ table > </ div > < asp:Button ID ="btnQuery" runat ="server" OnClick ="btnQuery_Click" Text ="Button" />< br /> < asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="False" Width ="100%" DataKeyNames ="Path" OnRowCommand ="GridView1_RowCommand" > < Columns > < asp:BoundField DataField ="RANK" HeaderText ="匹配度" /> < asp:BoundField DataField ="FILENAME" HeaderText ="文件名" /> < asp:BoundField DataField ="SIZE" HeaderText ="大小(byte)" /> < asp:BoundField DataField ="WRITE" HeaderText ="最后更新时间" /> < asp:BoundField DataField ="HITCOUNT" HeaderText ="匹配字数" /> < asp:ButtonField HeaderText ="" Text ="下载" CommandName ="download" /> </ Columns > </ asp:GridView > </ form > </ body > 程序查询: protected void btnQuery_Click( object sender, EventArgs e) { string text = txtQueryText.Text.Trim(); if (text.Length > 0 ) { using (OleDbConnection conn = new OleDbConnection( " PROVIDER=MSIDXS;DATA SOURCE= " + txtIndex.Text)) { conn.Open(); using (OleDbCommand cmd = conn.CreateCommand()) { cmd.CommandText = string .Format( @" select Rank ,HitCount ,Filename ,Size ,Write ,PATH from Scope() where CONTAINS ( '{0}') order by Rank desc,WRITE desc " , txtQueryText.Text.Trim()); // MSIDXS 不支持参数 // cmd.Parameters.Add("Pram1",OleDbType.VarWChar); // cmd.Parameters[0].Value = txtQueryText.Text; using (OleDbDataAdapter da = new OleDbDataAdapter(cmd)) { using (DataTable dt = new DataTable()) { da.Fill(dt); GridView1.DataSource = dt; GridView1.DataBind(); } } } } } }

    下载文件代码:

    protected void GridView1_RowCommand( object sender, GridViewCommandEventArgs e) { if (e.CommandName.ToLower() == " download " ) { GridView gv = sender as GridView; if (gv != null ) { string path = gv.DataKeys[ Convert.ToInt32( e.CommandArgument) ].Values[ 0 ].ToString(); downloadFile(path); } } } private void downloadFile( string FullPath) { string extension = Path.GetExtension(FullPath); string fileName = Path.GetFileName(FullPath); string ct = "" ; try { // 取得扩展名对应的 mime 类型 RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(extension); ct = regKey.GetValue( " Content Type " ) as string ; } catch (Exception ex) { Debug.Write(ex.Message); } if (ct == null ) // 没取到的就按照文件 ct = " application/octet-stream " ; this .Response.AddHeader( " Content-Disposition " , " attachment;filename= " + HttpUtility.UrlEncode(fileName)); this .Response.ContentType = ct; this .Response.WriteFile(FullPath); this .Response.End(); }

     

    最后把 I:\QuBinDocs\Favorite\ NTFS 权限设置为 ASPNET 用户可以访问即可.

      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/30087.html

      分享给朋友:

      “索引服务器作用 windows索引服务” 的相关文章

      黑色星期五 2019:市场表现与购物策略揭秘

      黑色星期五的概述 黑色星期五,这个听起来颇具神秘色彩的词汇,实际上是指每年感恩节后的第一天,标志着圣诞购物季的开始。在美国,黑色星期五吸引了成千上万的消费者,商店为了吸引顾客纷纷推出大幅折扣和促销活动。尽管它最初起源于美国,但随着时间的推移,这一购物狂潮逐渐扩展到全球,其背后的商业魅力覆盖了多个国家...

      Hostloc论坛:主机爱好者的交流与协作平台

      在这个快速发展的互联网时代,信息交流变得尤为重要,Hostloc论坛正是这样一个致力于主机相关话题交流的平台。论坛的创办源于一群热衷于主机技术的人士,他们希望通过建立一个开放的讨论空间,分享自己的经验和见解。随着时间的推移,Hostloc逐渐发展成为一个全球知名的主机论坛,吸引了来自各个国家的用户共...

      RackNerd与ColoCrossing的对比分析:选择适合你的数据中心服务

      RackNerd vs ColoCrossing概述 在当前的互联网服务市场中,RackNerd与ColoCrossing都是备受关注的数据中心服务提供商。它们各自的成长背景和市场定位都显示出一些显著的差异。RackNerd成立于2019年,专注于提供低价 VPS 和服务器租用服务,屡次推出吸引人的...

      VPS流媒体解锁测试:确保顺畅访问全球流媒体内容

      在如今的互联网时代,流媒体已经成为我们日常生活中不可或缺的一部分。无论是观看热门电视剧,还是播放最新的音乐视频,流媒体服务的便捷性吸引了无数用户。然而,涉及不同地区提供的内容时,依然存在一些区域限制。这时,VPS(虚拟专用服务器)流媒体解锁技术的重要性便不言而喻。 VPS流媒体解锁是指通过虚拟专用服...

      如何获取低价域名:选购指南与注意事项

      在当今数字化时代,网上存在着大量的低价域名和注册选项。低价域名通常是指那些价格较为便宜的域名,相比传统的域名选择,它们为个人和企业提供了更加实惠的选择。注册这些域名的方式多种多样,市场上也有许多能够提供成本效益高的选择,适合各类需求的用户。 在这个竞争激烈的网上环境中,很多人希望能以较低的成本建立自...

      Zgo VPS:高性能虚拟专用服务器的最佳选择

      在2021年,ZgoCloud(最初名为Zgovps)如雨后春笋般成立于美国特拉华州。作为一家新兴的技术公司,我们专注于提供高性能的虚拟专用服务器(VPS),这让我对公司的前景充满了期待。我们最初的使命是为各种用户提供可靠的网络解决方案,而现在我们已经成长为行业内的一股重要力量。 我们的全球数据中心...