创建编录名:

1. 改变文件存储时的文件名
  2. 配置索引服务器,并将索引服务器与MS SQL Server关联。
  3. 修改SQL语句,将进行全文查询语句的内容加入查询条件中
  文件的存储方式:
  为了方便存储以及方便索引,我们将上传的文件存储到一个目录里面,为了保证上传的文件名不重复,采用GUID作为文件名,并且通过这个GUID于数据库记录相关联。同时,文件的后缀还保持原始文件的后缀,让索引服务能够识别该文档。
  配置索引服务
  进入计算机管理(Computer Management)程序(右键”我的电脑”->”管理”),并找到索引服务(Index Service)
  配置索引服务的功能
  (1)右键选择索引服务弹出一个菜单
  (2)选择New->Catalog(新建一个编录)
  设置新增加的编录
  (1)输入编录的名字(这个名字需要与数据库进行关联,要注意命名,这里假设DCSII
  (2)点Browse进入选择索引服务运行目录窗体
  (3)选择前面创建的索引运行目录(任意地方)
  (4)点确定完成本次操作
  在编录创建号以后,需要给编录增加目录
  (1)右键选择刚刚创建的编录
  (2)选择New->Directory(新建目录)
  新建索引目录
  (1)点击Browse进入目录选择页面
  (2)选择要进行全文检索文件的目录
  (3)确定完成本次操作
  完成创建后启动索引服务
  (1)启动索引服务
  (2)索引服务启动成功后索引编录的信息,可以看到编录信息就表示服务已经启动成功。
  将索引服务和SQL数据库关联:
  在SQL 查询分析器(SQL Query Analyer)里执行下面的存储过程
  EXEC sp_addlinkedserver Dcs, -- 连接服务器的名字,到后面查询的时候要用到
  'Index Server',
  'MSIDXS',
  'DCSII' -- 索引服务里新建的编录名字
  索引服务的性能调整方法1
  (1)右键选择索引服务
  (2)选择 All Tasks-> Tune Perrformance
  (3)选择用户自定义
  (4)点击Customize进入性能调整窗体
  (5)将Index和Querying的属性移动到最右边
  (6)点确定完成操作
  性能调整方法2
  如果服务器不需要对整个系统的文件进行索引,可以停止或者删除System编录。
  MSSQL对索引服务器的调用
  1. 通过sql语句查询连接服务器的内容
  SELECT Q.*
  FROM OpenQuery(dcs, --连接服务器名字
  'SELECT FileName, Size, DocAuthor, path --在连接服务器里的sql语句
  FROM SCOPE()
  WHERE CONTAINS(''番号 and abc'') '
  ) AS Q
  2. 因为SQL语句不支持动态输入的字符串,因此查询字符串只好在C#代码里进行拼接
  s.p.

在Web程序中使用全文索引服务

/*

catalog即为我们创建的索引编录

在此编录下的所有目录中查找 关键字为keyString的文件,把查找到文件记录写入数据库

*/

#endregion
  private void FileSearch(string catalog)
  {
   Database mySQL    = new Database(); 
   DataSet ds     = new DataSet();   
   String myConnStr   = "Provider=MSIDXS; Data Source=" + catalog+ ";";
   String mySql    = "SELECT FileName, Path, Characterization, Rank, Create, Size FROM SCOPE() WHERE CONTAINS ('" + keyString + "')> 0";
   OleDbConnection myConn  = new OleDbConnection(myConnStr);

OleDbDataAdapter myAdapter = new OleDbDataAdapter(mySql,myConn);
   try
   {
    myAdapter.Fill(ds,"Search");
   }
   catch (Exception ex)
   {
    UDS.Components.Error.Log(ex.ToString());
    Server.Transfer("../Error.aspx");
   }
   finally
   {
    myAdapter =null;
    myConn.Close();
    myConn = null;
   }   
    
   
   for(int i=0;i<ds.Tables["Search"].Rows.Count;i++)
   {
    DataRow myDr;
    myDr = ds.Tables["Search"].Rows[i];

SqlParameter[] pparameters = {            
             mySQL.MakeInParam("@FileName",SqlDbType.VarChar,300,myDr["FileName"]),
             mySQL.MakeInParam("@Path",SqlDbType.VarChar,300,myDr["Path"].ToString().Replace(Server.MapPath("..//UnitiveDocument//Document").Replace("/","//").ToLower()  ,"") ),
             mySQL.MakeInParam("@Characterization",SqlDbType.NText ,10000,myDr["Characterization"] ),
             mySQL.MakeInParam("@Rank",SqlDbType.VarChar,300,myDr["Rank"]),
             mySQL.MakeInParam("@Create",SqlDbType.DateTime ,10,myDr["Create"]),
             mySQL.MakeInParam("@Size",SqlDbType.Int,4,myDr["Size"])
            };
    mySQL.RunProc("sp_AddScope",pparameters);
   }

}

@@spid当前用户会话进程ID

Microsoft索引服务器(Index Server)

Microsoft索引服务器把World Wide Web中流行的搜索能力带入到企业intranets,Internet网址和其他网络中 — 而不需要对文档的格式进行重新编排。Microsoft索引服务器作为Windows NT Server 4.0和Microsoft Internet信息服务器(Internet Information Server,IIS)的一部分发行。用户可以填写任何网络浏览器的表格,并由这些浏览器对内容和多个文档性质进行搜索,例如作者和书名。

World Wide Web的流行和快速成长可以大部分归功于这样一个事实:通过使用一个网络浏览器可以很容易查询到存储于网络服务器中的信息。新的用户往往惊讶于他们能够如此简单地搜索特定的网址,并访问大量的电子信息。但是,这些传统的搜索工具是比较昂贵的,并且不易安装和维护。

Microsoft索引服务器集成于Microsoft Internet信息服务器2.0 (IIS)和Windows NT Server 4.0操作系统中,可以把网络搜索的强大功能引入到企业intranets和Internet网址中。一旦安装后,它将自动建立一个你的网络服务器的索引,能够使用户很容易地通过相同的查询表格从任何网络浏览器中进行搜索操作。

索引功能把字(words)映射到文档和文档中的位置上。正如一本书的索引可以把一个关键字映射到书中的某一页,一台计算机中的内容索引从一个文档中取出一字,并把它映射回该文档中。其他的网络服务器仅限于查询HTML页,而Microsoft Index Server使用了开放式标准的内容过滤器,可以索引任何文件类型,包括了Microsoft Word和Microsoft Excel文档。这样就不需要改变你的商业工作的形式,而仅需在intranet中把文档共享即可。

Microsoft索引服务器的设计是使得索引过程可以在后台进行,不需要用户的输入,并最小化了对系统资源的要求。索引过程仅需要简单地填写一个查询表格中的字段,可以允许用户把精力集中于所需查询的信息内容中,这是通过一系列参数,包括目录,专题,作者,日期和文件类型等来实现的。由于查询表格是依据开放式工业标准,例如HTML来创建的,它们可以很容易地进行修改以满足任何地点的需求,并且可以在任何网络浏览器中使用。

网络管理员和网络专家(Webmasters),以及终端用户,将从Microsoft索引服务器的特征中获益,包括了:

  • 完全的文本索引.用户可以根据一系列字或短语,甚至一个完整的句子进行搜索。
  • 根据性质查询. 用户可以搜索存储于文件中的性质,例如作者,专题,文件大小和日期。
  • “模糊”(“Fuzzy”)查询. 用户可以使用匹配符(wildcards),常规表示匹配和语言stemming来查询一个动词的所有形式。
  • 高级搜索功能.用户可以合并以上的所有特征来进行查询,包括字和字之间的接近位置,比较操作符(<, =, >),和布尔逻辑 (AND, OR, NOT)。
  • 可定制的查询表格. 网络专家可以预先定义常用的查询,并且创建定制的搜索和结果页。
  • 零维护(Zero maintenance). 当文档被改变,加入或删除时,索引服务器将自动更新。
  • 集成的安全机制. 用户仅能浏览他们被授予浏览权限的文档。

于它能够对多种文件类型进行索引,并且能够工作于分布式系统中,Microsoft索引服务器向商业计算机系统中引入了以前仅限于HTML页,或昂贵的特定服务器上的强大网络浏览器搜索功能。

Microsoft索引服务器可以索引存储在Microsoft Internet信息服务器中文档的所有文本和性质,并且允许用户通过填写一个查询表格的字段使用任何World Wide Web浏览器来搜索服务器,网络服务器把查询表格传递给查询机制,并由查询机制找到相关的文档,然后把结果以Web页的格式返回给客户机。除了HTML和文本文件外,索引服务器还可以索引特定格式文档的所有文本内容和性质的值,例如那些由Microsoft Word或Microsoft Excel创建的文档。这种功能使得一个组织能够把它现有的文档直接发布到它的intranet中,而不需要把所有的东西都转换为HTML。

查询表格

表格的一个例子示于图1。

这个例子中,用户将查询整个网络中包含了短语“NT Server” 在短语”Performance Benchmarks.” 附近的所有文档。

了执行这个查询,用户需要点按“Execute Query”按钮。

引服务器允许一个网络专家或管理员创建定制的搜索表格,来帮助雇员和其他客户在本地查找文档。这种表格可以进行修改,允许用户依据内容查询,或是依据其他文档性质,例如作者或专题。这种查询表格是使用标准的HTML创建的,本身就是一个Web页,任何了解如何创建Web页的用户可以自己创建一个简单的查询表格。

基本查询特征

查询中有三个基本元素:查询的地点,查询的内容,和要浏览的信息。

查询范围指定了必须搜索的文档集合。典型情况下,查询范围是通过指定一个目录路径来完成的,例如d:/docs。IIS发布网络地址(Web “sites”),对应于一个指向一系列文档的虚拟根目录(virtual root)?图2 对此进行了说明。

"/Windows NT"和"/Applications"是服务器上的两个虚拟根目录,虚拟根目录映射到本地机或其他连接的文件服务器中的物理存储地点,索引服务器依据这些虚拟根目录对文档进行索引。一个管理员可以对服务器中的所有虚拟根目录进行索引,也可以选择一个子集进行索引。查询可以依据多个虚拟根目录,一个虚拟根目录,也可以依据一个虚拟根目录中的一个物理目录来进行。
查询限制
除了通过虚拟目录,物理目录和卷标(volume)来指定一个搜索范围外,索引服务器还允许合并一系列"测试"来建立查询限制。可以合并的查询限制包括:3
·搜索字和短语
·搜索在其他字或短语附近的字或短语
·限定文本属性来搜索字或短语。例如,搜索出现在一个文档摘要或总结部分的字
·搜索在特定文档类型中的字或短语,例如在一个Excel电子表格或一个PowerPoint表格中的字或短语
·使用参数操作符<, <=, =, =>, >和一个常量比较,例如一个日期或文件的大小
·使用布尔操作符AND, OR, 和AND NOT.
·在模糊查询中使用匹配符,例如"*", "?",以及常规表达式
·按匹配的质量排序
自由文本查询
索引服务器还允许自由文本查询,用户可以输入任何字或短语的集合,甚至是一个完整的句子来作为查询的限制条件。系统浏览这些文本,并且定位所有的名词和名词短语。如果输入了一个复杂的短语,索引服务器将抽出两个和三个字的联合,以及所有剩下的内容字,并去除"噪声"("noise")字,例如"a", "of",和"the"。
例如,假设用户输入了以下的自由文本查询:
"The Fulton County Grand Jury said Friday an investigation of Atlanta's recent primary election produced no evidence that any irregularities took place."
系统将定位以下的字和名词短语:

短语
Fulton

county

grand

jury

Friday

investigation

Atlanta

recent

primary

election

produce

evidence

irregularity

Fulton county grand jury

primary election

grand jury

Atlanta’s recent primary election

这些字和短语合并成为一个限制条件,适合于排序,并且作为一个查询发出以得到结果。自由文本查询使得查询对于新手用户十分简单,用户不需要学习查询语言的任何类型。

模糊查询
索引服务器提供了模糊查询支持,这意味系统将查询类似用户输入的字。系统支持类似DOS下的匹配符和类似UNIX下的一般表达式,来匹配文本属性。内容查询支持简单的前缀匹配,意味输入字"dog*"将返回"dogmatic"和 "doghouse",系统也支持语言stemming,以便匹配查询字的多种形式,这样字"swim"的输入将包括"swimming","swam","swum"和其他相关的字 - 这个过程称为inflection。索引服务器可以执行这种对输入字的语言分析,也可以执行相反的操作,称为stemming。
排序机制非常重要,一个字和所输入的原始字关系越远,则该字在结果集中的排序越低。例如,字"swim"比字"swimmer" 更接近于"swims" ,这是由于"swim"和"swimmer"在语法上的相关性更小。换句话来说,名词的复数形式比该词的过去式动词在语法上更接近于该词。当进行查询时,语法机制和排序算法考虑了这些语法特征。模糊查询和stemming功能在所有支持语言中都有。

性质查询限制
除了内容外,用户可以查询存储在对象中的性质。由于一个Word文档和任何OLE嵌入文档可以拥有相关的性质,这些性质可以用于查询。例如,一个用户忘记了一个文档的存储地点,可以依据性质查询一个服务器中所有她或他编写的文档。类似地,一个用户如果知道一篇论文的作者,而不知道论文的题目,他可以依据作者对论文进行查询。

除了作者外,索引性质包括了数据例如文件大小,创建和修改的日期,和文件名称。客户可以查询文本性质,例如文件名称或作者,和数字性质,例如最后一次修改后的文件大小或时间。所有OLE性质也可以进行查询,包括了Microsoft Office文档中特定性质。

标准比较操作符是合法的,包括了=, >, <, >=, <=, 和!= (不等于),可以使用于数字和文本性质中。另外,对于文本性质而言,所有内容查询功能都是可以使用的。当前,性质只能和常数进行比较;把一个性质和另一个性质比较的功能目前还不支持。查询限制条件可以自由地通过布尔操作符(AND, OR和AND NOT)以及括弧进行联合。

结果集
索引服务器可以把查询到的内容(query hits)合并为结果集,返回到客户机方。例如,一个200条款的结果集可以以10页(每页20个)的形式返回到客户机方。这种形式允许客户指定每页返回的条款数。

管理员可以限制查询条款的最大数目。结果集将告知系统在找到文档后的操作,例如,返回作者,文件名称,路径和文档的最后修改时间等。一个较好的表格查询可以是这个样子:"查询我C驱动器中所有包含短语"Windows NT 5.0 White Paper"的文档"("Look in my C drive for all Word documents that contain the phrase "Windows NT 5.0 White Paper" "),该查询将返回作者,路径,文件大小和修改日期。在一个查询中用户可以指定其它的元素,例如排序顺序。索引服务器可以依据条款的性质对结果集进行排序。

如果文档主体存储于一个NTFS卷标中,系统将检查所有的安全限制,并且对访问控制列表(access control list,ACL)进行检查。如果文档对象的ACL中禁止一个用户读取,则该文档将不会出现在返回到该用户的结果集中。

客户机可以指定在结果集中返回的性质数据(结果集中的列),任何符合查询限制条件的性质都可以作为一个结果列,管理员在设计结果页时可以控制返回的性质。除了返回存储于文档中的性质外,系统还可以产生一个文档的"摘要",作为结果集返回客户方。一个摘要是一个文档的总结信息,告知客户这是一个什么文档,文档摘要也可以作为限制条件的一部分。

结果集可以按照任何性质进行排序,一般来说,降序排列是比较常用的。由图1中查询表格产生的结果集显示于图3。

图 3 - 查询结果集示例
查询日志
Microsoft Internet信息服务器(IIS)已经记录了所有在客户机和服务器之间的网络流通情况。标准的IIS日志将搜集查询信息,例如查询的IP地址和发往服务器的查询,所以索引服务器自身不需要记录查询。错误和其它信息事件记录于Windows NT系统和应用程序日志中。
对搜索功能的将来发展的研究
索引和查询技术是下一代计算机的一个关键元素,可以用这么一句话来总结"在你指尖的信息"。Microsoft公司正在深入研究,以便推动这项技术向前发展。将来,该系统将提供给用户的反馈信息,帮助他们聚焦他们的查询。这样,用户将能够执行高度聚焦的查询,而不需要了解复杂的查询语言。

提供了查询基本功能的索引功能
为了允许用户快速高效地解决他们的查询问题,Microsoft索引服务器使用了一种强大的索引机制来作为最佳化的手段,大大改进了查询的性能。一些查询技术将过滤整个索引,但是对于高级的查询技术而言,一个索引提供的仅是实现方式中最实用的一种,所以高效的索引将给用户带来大量的益处。

基本索引特征

索引服务器提供以下的基本索引特征:

  • 索引Web页中的所有文本,并且把HTML标签(tags)作为性质进行查询.这允许索引服务器利用文档的结构,而不仅是其中的原始内容。
  • 索引格式化数据中的所有文本,例如Microsoft Excel或Word文档. 索引服务器也提供了通过开放式标准IFilter接口查询特别数据格式的能力。与其它一些仅限于读取文本文件的系统不一样,索引服务器可以读取许多文档格式。
  • 增量式更新索引(Incrementally refreshes indexes). 这意味着如果一个用户仅改变了一个文档,那么只有一个文档被索引,从而节省了系统资源。
  • 在一个IIS虚拟目录基础上控制索引. 这将允许用户控制他们想要索引的文档的数量。例如,用户可以仅索引并获得他们的公共数据,也允许用户屏蔽对一个包含了大量动态信息的目录的索引,因为这些信息对一个查询是没有什么用处的。
  • 索引文件和文档性质值. 这允许用户查询作者,日期和其它的性质。
  • 索引七种支持语言的文本. 索引服务器可以处理多种语言的文档,并且可以在索引一个文档时自动改变所使用的语言。例如,系统可以从英语切换为德语,再切换为法语,最后切换回英语。
  • 自动索引更新. 在文档被修改时,系统将在后台对该文档进行索引。所以没有必要手工对文档进行更新,系统将跟踪改变信息,并且在改变发生时进行索引。这种功能可以保证文档是最新的。
  • 性能监视. 服务器管理。这可以让管理员了解到索引的数目,进行中索引的状态,索引文档的数目,和其它操作标准。
  • 零维护(Zero-Maintenance). 在设计中,索引服务器提供了7 x 24可靠性,包括了自动出错检测和自动恢复功能。
  • 低的系统花销. 设计中的一个主要目的是保证索引服务器对系统的影响尽量地小。

索引的控制是依据虚拟根目录进行的,一个索引建立于一系列虚拟根目录和它们的子目录基础上。索引服务器可以实现增量地更新一个索引,这意味着仅索引被改变的文件来更新索引,索引服务器不需要索引所有文档来更新几个改变。索引服务器也提供了零维护设计特征,就是说该系统将尽可能地自动运行,根据索引的状态维护自身的统计数据(statistics),并且在必要的时候进行最佳化。这样服务器管理员可以放心地安装索引服务器,而计算机将自动处理例程操作。

索引服务器的设计也支持在一个国际信息环境中对文档进行索引和搜索,并且内置了对七种语言的完全支持,也可以通过一个开放式的定义加入对其他语言的支持。

索引过程的步骤

理解文档索引工作最容易的方式是跟踪当一个文档被修改时所发生的顺序操作。索引服务器,与许多索引系统不同,不会按正常方式来检查被修改的文档,这样做会加重系统资源的负担。索引服务器的工作方式是在文件系统中登记,以得到改变的通知信息,并且仅在合适的时候更新索引。

搜集改变的通知信息

当一个NTFS卷标中的文档被修改后,文件系统将通知索引服务器。索引服务器也许并不马上索引该文档,索引是一个惰性(lazy)过程,将在后台进行,并且仅在有足够的计算机资源时发生,这样就不会影响整个系统的性能。当索引服务器确定它可以索引发生的变化后,它将打开变化的文档,然后开始索引过程。

许多索引产品使用了一种polling机制,例如,每十分钟检查磁盘,寻找从上一次扫描后加入,删除和修改的文件。这种机制在许多环境中是可以接受的,但是经常会出现问题,连续的polling将会阻止任何工作的完成。所以,polling是一种周期性的操作,可以每十分钟一次,也可以每一小时一次。但是这种操作对于一个庞大的服务器来说是非常昂贵的。这就是为什么索引服务器使用操作系统来跟踪文件的修改的原因。

过滤,字分离和规范化

索引过程包括了三个主要步骤,过滤,字分离和规范化,这些步骤显示于图4。

过滤
索引的第一个步骤是内容过滤。文档一般是以特定的文件格式存储,这些格式对系统是不透明的。例如,WordPerfect文件在磁盘中的存储格式和Microsoft Word文件的格式不同。许多内容索引系统不能读取这些文件格式,所以不能对这些文件进行索引。索引服务器使用了开放式标准的内容过滤器来索引特定的文件格式。一个内容过滤器可以认为是一个应用程序的小型版本,功能是仅对这个应用程序自身文件进行读取。

当索引服务器开始对一个文档进行操作时,它将确定文档的类型,并使用合适的内容过滤器。过滤器从文档中提取出文本的主干,然后以索引服务器可以识别的格式传送到系统中。

除了提取文本主干外,内容过滤器的另一个重要功能是识别文档中所使用语言的转换。有些文档格式将指示文本某一部分所使用的语言,如果这些标签存在,内容过滤器将根据这些标签对某一部分的文本进行对应的操作。例如,过滤器将根据标签处理一段用法语写的文本,这段文本将被过滤器标志为"法语",索引服务器将使用这个语言标签来装载适合该种语言的字分离器和规范化程序(参见以下内容)。
内容过滤器也负责处理嵌入对象。当在一个文档中出现嵌入对象时,它的类型将被识别,并且相应的过滤器将激活。这意味索引服务器不仅能够索引一个Word文档中的文本,也能够索引嵌入到该Word文档中的Microsoft Excel电子表格中的任何文本。

由于有上千种不同的应用程序和数据格式,而且文档的格式经常变化,所以实现内容过滤器的程序设计界面被抽象出来,创建了开放式标准的IFilter界面。这样索引服务器和其他厂商之间就有了一个协定,指定了内容过滤器是如何使用的。这种功能允许其他公司为他们的数据编写内容过滤器,这也意味那些最熟悉数据格式的人将是那些为这种格式编写内容过滤器的人。

在过滤后,下一个主要任务是字分离。

字分离(Word Break)

数据经过过滤器后成为字符流。由于索引服务器对字进行索引,它必须能够在字符流中确定这些字。人能够很容易浏览一系列的字符,并在其中找出特定的字,但是这对一台计算机来说将是一项困难的工作。不同的语言以不同的方式处理字,以不同方法分离字。许多语言使用空格和标点来指示字的分离。而一些其它语言,例如日语,并不使用空格来指示字的分离。

即使一些欧洲语言也存在字分离问题。例如,德语中的复合动词一般在使用时分为两部分,一部分出现于句子的开头,而另一部分在结尾。简单的空格分离字的方法在德语不太适用,德语的字分离器需要查询整个句子,并先查找动词的不同部分的位置,然后在处理它们,以找到该动词的基本形式。

索引服务器提供了针对不同语言的字分离器,这些分离器知道如何分离字符流成为有效的字。这些模块能够理解对应语言的结构和句法,并且对文本进行分析来定位字。索引服务器提供了以下语言的字分离器:

  • 英语
  • 法语
  • 德语
  • 西班牙语
  • 意大利语
  • 荷兰语
  • 瑞典语

字分离器可以一边接收一个字符流,一边发出另一个字符流。为了避免代码页(code pages)和其它双字节字符集(character-set)所引起的问题,索引服务器使用单一代码(Unicode)来存储所有它的索引数据。

当确定了一种语言后,对应的字分离器被装载。例如,对于英语文本流,将使用英语分离器,它将完成象查找标点和空格的工作。

与内容过滤器类似,字分离器(和规范化器)都是模块化的构件。独立软件厂商可以使用开放式标准来创建自己的字分离器,并且把它们插入到系统中。这种方式允许第三方厂商提供目前索引服务器中不支持语言的语法分析功能。

规范化

索引的最后一步是文本规范化。规范化过程将"净化"由字分离器发来的文本,并且处理例如大小写,标点,"噪声"字的删除等。规范化过程将把数据以一致的表示方式放入索引中。

在大多数语言中,文字中都包含许多噪声字 - 这些字用于平滑一个句子的结构,但是与上下文的关系不大。在英语中有"the", "of", "and"和"you",以及成百个类似的字。这些字对于语言本身的结构和语法是十分重要的,但是不包含什么内容信息。

这些字的的引用将不会存储在内容索引中,系统中对于每一种语言都有一个关于这种语言噪声字的列表,这种列表可以有由管理员定制。在一个文档进行过滤时,如果产生了列表中的一个字,这个噪声字将被忽略。

噪声字的删除将会大大减小索引的大小,这是因为它们是文本中的很大的一部分。一个由100个英语噪声字组成的列表大约占据所有英文文本的50%。噪声字列表可以由用户定制,可以包括本地方言和特定程序的字。

字被规范化后将被放入内容索引中。

多语言索引的单一代码(Unicode)

今天大多数Web页都是使用英语写的,但是在一个intranet中许多文档并不是这样。由于IIS向文档提供服务,所以多语言索引和查询特征是索引服务器的一个标准特征。查询系统的设计应该考虑本地化。它应该是完全模块化的并且能够动态地装载和卸载特定语言的对应功能程序。

索引服务器可以索引多语言文档,并且在需要的语言之间进行切换,例如索引一个英文段落,然后索引一个法文段落,再切换回英文。所有索引信息以单一代码字符存储,并且所有查询在处理前都转换为单一代码。

性能监视器

为了帮助管理员最佳化他们的查询服务,系统提供了大量不同的性能监视器。这些监视器检测不同的特征,例如需要进行索引的文档数目,查询进行处理的速度。索引服务器的设计目的是尽量自动化,一旦索引服务器安装完毕后,所有的操作都是自动的,包括了更新,索引创建,最佳化,甚至可以在电力故障时进行恢复。从一开始,索引服务器的设计就是为了满足有重要任务的环境,服务器必须能够一天24小时,一星期7天地连续运行。

降低对系统的需求(low overhead)

索引服务器最重要的一个设计目标是降低对系统的需求;就是说,在运行索引任务时,最小化对磁盘空间和处理器运算周期的消耗。这样这些资源可以用于其它任务,例如网络服务,应用程序服务和其他的服务。

可恢复性和可靠性

可恢复性和可靠性是十分关键的,例如在索引五百万个文档时出现了系统的硬件故障,重新对所有文档进行索引是低效的方式,所以在设计中投入了很大的精力来确保这个索引系统是可恢复的。当一个系统在一次故障后重新启动,首先确认磁盘的完整性,然后索引服务器被激活来对所有索引进行一次完整的一致性检查。通过使用与文件系统使用相同类型的记录日志和恢复机制,索引服务器可以检查到故障所在,并进行修复。

当向磁盘写入数据时,索引服务器以一种面向事务的方式进行工作,从而避免了仅索引了文档的一部分。或者是当整个文档在磁盘上时进行索引以保证正确性,或者就对该文档不进行索引。这种方式将避免由于部分索引所造成的不一致状态。

索引服务器以Windows NT操作系统为基础,以确保能够在一个重要的服务器环境中提供7天,24小时连续运行的可靠服务。

位置接近数据

索引服务器包括了完全的近似数据功能,指示了一个字相对另一个字的位置关系。一些索引系统不存储位置接近数据。删除位置接近数据将产生较小的索引;但是,一个用户将不能索引短语,这是由于索引不知道一个字将出现在相对另一个字的什么位置上。作为结果集排序机制的一部分,如果所搜索的字相对越近,它们的排序顺序就越高,如果它们是相邻的,则成为一个短语,排序顺序就更高

使用一个数据库连接器

索引服务器与IIS接口的方式非常类似SQL Server。索引服务器使用自身的连接器模型,而不是使用ODBC连接器,并且提供几个优点,同时界面对于管理员来说是很熟悉的。数据库返回结果,并且数据库连接器把这些结果转换为一个网络页返回给用户。

索引服务器使用了一个一致的模型来解决查询,利用一个应用程序把查询从搜索表格转换为与索引服务器的索引兼容的格式,系统执行这个查询,得到的结果转换为一个Web页,然后返回给用户。

数据库连接器使用了帮助者(helper)文件,名为IDC文件,来帮助从Web表格的查询转换。它还使用了一个帮助者文件,名为HTX文件,来指定结果集应该如何进行格式编排和如何显示给用户。索引服务器扩展了这个模型,它不是使用IDC文件,而是使用IDQ文件,有着非常类似的结构和格式。索引服务器也使用了高级的HTX文件来对结果进行格式编排。这些高级的HTX文件包括了几个扩展功能,向索引服务器查询结果提供了新的特征,支持在数据库结果中没有对应物的结果集格式。

索引服务器查询过程示于图5。

图 5 - 查询过程

查询的第一步中,浏览器连接到服务器,返回一个查找表格。用户填写这个查找表格并按下Submit, Go, 或Execute Query按钮,把查询传送回服务器中。
查找表格的一个元素是到一个IDQ文件的引用,IIS服务器检查到IDQ文件的引用,并把查询发给索引服务器。

索引服务器检查IDQ文件和用户所填写的查找表格中的内容,然后所有这些数据转换为一个合适的查询,可以针对这些索引被执行。

在图5中的第三部分,索引服务器接受从索引返回的查询结果,IDQ文件中的一行指定了一个HTX文件,用于对输出进行格式编排。

然后,通过使用HTX文件中的查询结果和内容,索引服务器建立一个HTML结果页,该结果页传送回IIS服务器,最后传回浏览器中。

HTML,IDQ和HTX的详细信息
这部分简单地讨论了HTML表格,IDQ文件和HTX文件,其目的并不是提供关于HTML, IDQ或HTX 文件和句法的详细说明,而是让读者更好地了解索引服务器是如何与IIS交互的。
查询表格句法

以下非常简单的查询表格为例:

它是通过以下HTML代码建立的:
<FORM ACTION="/scripts/pdcdemo.idq?" METHOD="POST">
Enter your query:
<INPUT TYPE="TEXT" NAME="CiRestriction" SIZE="60" MAXLENGTH="100" VALUE="">
<INPUT TYPE="SUBMIT" VALUE="Execute Query">
<INPUT TYPE="RESET" VALUE="Clear">
</FORM>
以上代码中重要的两行以粗体显示。<FORM ACTION…>行指定了一个特定IDQ文件的位置。这个IDQ文件用于帮助处理查询表格。每一个索引服务器查询表格必须指定一个目标IDQ文件。
<INPUT TYPE="TEXT">行定义了一个名为CiRestriction的变量,这个变量设置为用户在查询字段中输入的任何文本。例如,如果用户敲入了"systems management",则CiRestriction的内容将是文本"systems management"。
当用户按下了"Execute Query"按钮,该表格数据将传送给IIS进行处理。IIS服务器定位指定的IDQ文件,并且把表格数据和IDQ文件发往索引服务器应用程序。

IDQ文件
文件PDCDEMO.IDQ包括了以下文本:
[Query]
CiColumns=filename,size,rank,characterization,vpath,DocTitle,write
CiFlags=DEEP
CiRestriction=%CiRestriction%
CiMaxRecordsInResultSet=150
CiMaxRecordsPerPage=10
CiScope=/
CiTemplate=/scripts/spdc1.htx
CiSort=rank[d]
CiCatalog=d:/
这个IDQ文件的每一行定义了查询的一部分,例如范围,限制条件,和如何格式化数据。该文件的每一行都解释于以下表格:

一旦结果集一种中间格式返回,索引服务器处理器将访问指定的HTX文件来对结果进行格式编排。

HTX文件
HTX文件是一种合适的HTML文件,包括了用于参照查询结果中数据的变量。例如,以下HTX代码定义了一个页头,用于显示查询限制条件和用户正在浏览的当前页中的文档,代码后面是它所产生的格式化了的HTML文本。

<%if CiMatchedRecordCount eq 0%>
<H4>No documents matched the query "<%CiRestrictionHTML%>".</H4>
<%else%>
<H4>Documents <%CiFirstRecordNumber%> to <%CiLastRecordNumber%> of
<%if CiMatchedRecordCount eq CiMaxRecordsInResultSet%>
the first
<%endif%>
<%CiMatchedRecordCount%> matching the query "<%CiRestrictionHTML%>".</H4>
<%endif%>
Documents 1 to 10 of the first 150 matching the query "systems management".
HTX文件仅是一个标准HTML文件,包含了一些额外的标签以便IIS和索引服务器可以包含变量名和其它处理能力。HTX文件是作为格式化结果的一个模板。

索引服务器的将来
索引服务器是一个正在发展的产品,在每一个大的和小的修改版本中都将加入许多新的和强大的特征。索引服务器版本1.1允许用户浏览匹配查询条件的文档中的文本,这经常称为"hit highlighting." ,Hit highlighting能够和所有索引的文档格式合作,所以用户可以在HTML, Text, Word, Excel,甚至PowerPoint文档中浏览结果。当和Microsoft Internet News Server一起使用时,Index Server 1.1也可以允许用户查找Internet新闻组(newsgroup,NNTP)文章。

索引服务器的将来版本将提供更好的对索引和查询函数的编程访问,从而允许管理员和网络专家进一步定制查询和结果表格,还计划提供高级查询特征,能够帮助用户精练它们的查找,并且改善查询的精度。这些功能将帮助用户筛选成百上千个文档,快速查到相关信息。

总结
Microsoft索引服务器把网络类型的索引和查询的强大功能引入到公司intranets, Internet网址和其它的网络中,而不需要对文档进行重新格式编排。通过点按一个按钮,终端用户可以索引和查询任何存储在安装了Internet信息服务器(IIS)的Windows NT Server 4.0系统中的intranet或Internet网址中的内容。

这种强大的,易于使用的内容索引和查询系统使用了内容过滤器进行索引,能够对多种文件类型进行查询。由于它的索引功能是可扩展的,第三方开发人员可以通过开放式标准的IFilter接口创建内容过滤器来支持其它数据格式。这意味着任何应用程序,甚至是那些由一个公司内部开发人员编写的内部使用数据格式都能够被索引和查询。

这种强大的查询功能以易于使用的查询表格提供给用户,允许用户依据一系列参数聚焦于他们的查询,这些表格可以简单地进行定制来满足用户组的需要,并且索引过程将在后台进行,不需要用户的输入,并且对系统资源的需要也最小。

Microsoft索引服务器将使网络管理员,网络专家以及终端用户获益,它把网络查找的强大功能引入了他们自己的Internets, intranets, 和现存的文档中。

更多的信息

请访问Microsoft公司的网址以得到最新的技术和方案信息:
Microsoft的Homepage    http://www.microsoft.com
Index Server的Homepage    http://www.microsoft.com/ntserver/search

附录:经常问到的问题

查询系统
我如何限制对索引服务器的系统影响?
索引服务器提供了一系列登记项设置来控制它系统资源的使用。这些控制允许管理员设置系统所使用RAM的大小(最大值和最小值), 磁盘的使用, 处理器使用等等。另外,管理员可以提高和降低索引和查询过程的优先级。

索引服务器能否支持对非FAT或Netware卷标的查询?
索引服务器可以索引任何IIS虚拟根目录。如果根目录指向一个本地或远程FAT卷标或一个远程Netware或Unix共享目录,这个卷标将被索引,但是一些功能将丧失。在FAT卷标情况下,系统将不能提供任何安全检查,这是因为FAT不支持ACLs。如果远程FAT卷标由一台Windows NT计算机管理,系统将使用改变通知来更新,如果远程FAT卷标不由Windows NT管理,系统将强迫周期性地扫描卷标来确定改变是否发生。

远程Netware和Unix共享目录可以被索引;但是将没有安全性检查。Netware卷标必须周期性地被重新扫描来检测改变的发生。

索引服务器能否发送模糊逻辑查询?
该查询系统允许用户使用传统的DOS匹配符("*"和"?")以及UNIX Grep语言的一种变形方式来进行查询。该查询系统还允许用户产生一个字的语法变化形式来扩大查询的范围(例如,"swim"可以自动地展开包括 "swim", "swam", "swum")。

用户也可以改变查询中字形式的比重,这些比重用于排序查询结果来进行最后的显示。

索引服务器和Microsoft Normandy Information Retrieval Server的不同是什么?
索引服务器提供了一次在一个单一网络服务器中进行查询的能力。而Normandy Information Retrieval Server允许大型Internet内容提供者和intranet网址分布查询的负载,同时对大量索引进行查找。

目前Internet查询工具快速增长;例如WAIS和Harvest。索引服务器如何利用和协同这些快速发展的标准?
我们正在研究索引服务器如何与其他查询和索引系统进行合作。

索引系统

内容索引重新建立的频率是多少?我如何知道索引何时已经是最新的?
内容索引更新是一个后台过程。当查询发出后,内容索引和查询系统将返回一个标志符,指示在查询发出时是否所有索引都是最新的,这个标志符可以选择是否显示给用户。管理员也可以使用管理Web页来确定索引的状态。

用户了解这一点非常重要:索引服务器不能保证在查询发出和结果返回时,索引都是最新的状态。

性质是否索引?
文档中所有数字何字符串的性质都被索引。二进制性质,例如图标,没有被索引。

索引服务器是否能够索引SQL Server数据库的内容?Exchange的内容呢?
在它最初的发布版本中,索引服务器仅能索引文件系统。我们正在考虑将来扩展该系统的功能,提供对数据库的支持,例如SQL Server和Microsoft Exchange e-mail服务器。

我们是否能够控制索引的定义?
管理员指定哪个IIS虚拟根目录应该被索引。管理任务将是很简单的,只要简单地选中一个检查框来指示应该给索引的根目录。

索引服务器如何存储何索引应用程序产生的临时(非文件)对象?
典型情况下,临时对象不应该被索引。这可以通过两种方式完成,关掉对一个特定目录(例如./TEMP目录)的索引,或不提供对一种特定临时文件类型的内容过滤器。

在索引文件时,系统开销/延迟的情况怎么样?
文档的索引在后台进行。索引占用的空间一般小于被索引文档文件大小的10%。一个有16M RAM的Pentium 90计算机一般可以一小时索引100Mb的文件。这个速度非常依赖于处理器和RAM。一个有64M RAM的双处理器 MIPS系统一小时可以索引超过1Gb的数据。索引系统将周期性地最佳化它的索引和其他数据结构,这样做的目的是释放RAM,改进性能,并减小磁盘的开销。

索引服务器(全文索引)的使用相关推荐

  1. MySQL索引介绍,普通索引,全文索引,空间索引,多列索引使用原则,建立索引常用的规则

    转自:https://blog.csdn.net/tomorrow_fine/article/details/78337735 1.MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可 ...

  2. MySQL 索引 :哈希索引、B+树索引、全文索引

    文章目录 索引 引言 常见的索引 哈希索引 自适应哈希索引 B+树索引 聚集索引 非聚集索引 使用方法 联合索引 最左前缀匹配规则 覆盖索引 全文索引 使用方法 索引 引言 为什么需要索引? 倘若不使 ...

  3. HugeGraph 图数据库索引介绍 - 范围索引,全文索引

    目录 HugeGraph 索引介绍 二级索引 组合索引 范围索引 全文索引 HugeGraph 索引介绍 二级索引 创建schema和添加数据 schema.propertyKey("nam ...

  4. xp系统如何开启索引服务器,windows xp 索引服务器

    windows xp 索引服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  5. 主键索引、唯一索引、普通索引、全文索引、组合索引的区别

    Mysql索引概念: 索引是一种可以加快查询的数据结构. 索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要 ...

  6. MySQL索引(B+Tree 索引、哈希索引、全文索引、 空间数据索引)、索引优化、优点、使用场景

    1. MySQL 索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现. 1.1 B+Tree 索引 是大多数 MySQL 存储引擎的默认索引类型. 因为不再需要 ...

  7. 什么叫安装文件索引服务器,搜出精彩 玩转Windows 2008系统心得

    [IT168 专稿]不少朋友已经在不经意间与Windows Server 2008系统进行了亲密接触,在一段时间的接触之后,不知大家对该系统的文件搜索功能会有什么样的体会?其实,Windows Ser ...

  8. mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼

    查询背景 有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775) 我们需要在这10万条数据 ...

  9. oracle 同步索引,oracle全文索引之同步和优化索引做了什么

    一.同步索引做了什么 我们知道,在数据被修改后,不能被查询到了,直到索引被同步.那么同步索引做了那些工作呢? > insert into t_domain values(3,'this is b ...

最新文章

  1. python对象编程例子-Python3.5面向对象编程图文与实例详解
  2. 题目1550:分糖果
  3. CentOS 7 修改终端字符界面分辨率
  4. 神经风格迁移(Neural Style Transfer)程序实现(Keras)
  5. azure_Azure ML算法备忘单
  6. IP通信基础 4月28号
  7. Linux pwd命令:显示当前路径
  8. 趣谈 | Python为什么受欢迎的本质,知道的人寥寥无几?
  9. MBSA有关安全漏洞的检查说明一
  10. spring security reactive获取security context
  11. 水印相机定位不准确怎么办_选好镜头 选好3D四轮定位仪
  12. 配置路由器console接口密码和vty接口密码
  13. DP12 龙与地下城游戏问题
  14. 专访网易游戏美术总监:寻找美术风格的蓝海
  15. sudo dolphin_如何使用Dolphin在PC上玩Wii和GameCube游戏
  16. 动网论坛8.2经典注入漏洞利用
  17. P2物理引擎中文文档
  18. [由零开始]Tair 介绍和使用
  19. win10 cvs服务器客户端操作(CVS Suite Studio,TortoiseCVS及WinCVS)
  20. 博弈论_浙大部分_3/8_囚徒困境

热门文章

  1. ubuntu不能访问windows中的文件
  2. 影片推荐:《机械姬》
  3. 12星座谈恋爱:说分手,很容易
  4. 花青素荧光染料2247688-56-6,Cyanine3 amine,Cy3-NH2,花青素Cyanine3氨基,可以用来标记蛋,抗体,多肽等
  5. 《 ERP高级计划》书的解读之零物料约束和能力约束逻辑(蔡颖)(转)
  6. Python-opencv 批量处理图片
  7. 那么,储能电池的BMS与动力电池的BMS有什么区别呢?
  8. 【量化入门】通过几种常见的量化策略框架,学习量化炒股
  9. aspen变压吸附塔_ASPEN软件模拟在分离中的应用
  10. DeepFlow Large displacement optical flow with deep matching