CSDN博客

img sk8boy

使用微软检索服务器检索(转载)

发表于2004/10/31 10:04:00  1587人阅读

分类: windows操作系统相关

使用微软检索服务器检索

Krishna Nareddy
Windows NT 查询小组
微软公司
1998年1月30日

介绍

这是用来帮助你理解和有效部署Microsoft研究方法系列文章的第三篇,这些文章用在你的Web站点和企业内部网上。第一篇文章:《研究方法剖析》,用来帮助你理解满足站点需要的搜索方案;第二篇文章:《Microsoft检索服务器介绍》,介绍了检索服务器的特点和功能。本篇文章目的是使你理解,管理和优化此检索器。它有助于把Microsoft检索服务器的文献方便地交叉引用。

检索服务器目录包括了检索基础结构的所有方面。因此我们从目录开始理解它的结构。下面我们深入探究检索过程。当检查过程的每一步时,你将被带入控制和标准化它所需的细节之中。于是你就得到了帮你使用检索服务器和监控其状态和表现的介绍。当你读完此文章,你会较好理解检索过程,以及如何调好状态,诊断,解决普通问题。

此文章中的信息适合于和Microsoft Windows NT® Option Pack 4.0一起发布的Index Server 2.0。大部分亦可用于将要和Windows NT 5.0一起发布的Index Server 3.0 ,但差别还是有的。这些差别将在Index Sever 3.0最终发布后的更新文章中涉及。

目录

一个检索服务器目录把所有用来使用和检索你的文献全集的细节,以及文献索引都包含了进去。它包括一套有关文献集合的目录,一个储存已编辑完全的文本检索的目录索引,一个储存文献资源的特性缓存器,一个用来优化检索过程的控制特性装置。关于目录的所有信息以下面的关键字保存在注册表中。所有的注册参数,除非特别指明,都和此关键字有关。许多参数可被位于Catalogs/<catalog>下的索引目录关键字的次关键字目录所替代:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/ContentIndex

Upon successful creation, Index Server 2.0 creates a default catalog named “Web”.

创建成功之后,检索服务器2.0 生成一名为“Web ”的默认目录。

资源目录

这是一个目录集合,它的所有内容都被包括进了文献全集。目录可以是本机的物理路径或符合通用命名规范(UNC)的远程路径。查询时,目录集可用来限制查询范围,以及帮助完成完整路径名(或UNC 名)的文件匹配,这样使文件流览器能定位它们。因为目录集是用来限定检索服务器查询范围的,故而检索服务器文献中常用“范围”这个术语来代替目录集。

和检索有关的目录列在Catalogs/<catalog>/Scopes 下的索引目录关键字的次关键字中。在次关键字目录中的变量代表待查目录,以及变量fixup,domain/user,flags。一个fixup 是路径的前缀,当远程客户发送查询时,它用来替代目录。当检索服务器检索远程目录的文件时,变量domain/user 用来登录入目录。标志域(flags)用来指明检索是否被包括或排除,以及它是虚拟的还是真实的目录。设置此标志域如以下变量组合所示。举例说明,若检索物理目录,标志域置5(1和4组合)。

0= 目录不检索(排除)

1= 目录检索(包括)

2= 目录是虚拟路径

4= 目录是实际路径

资源高速缓存

它是优化加速常用特征检索的本机磁盘存储器。存入缓存的资源分为以下几类:

检索服务器限定的仅供内部使用的资源。你不能直接控制这些资源。

检索服务器限定的频繁使用的资源,诸如路径和文件名等。这些资源是在文件收集进程中获取文档的特征。

检索服务器限定的,在文件过滤进程中从文档中获取或创造的资源。比如文档题目和文档作者等资源(对于HTML和Microsoft Office文档)。

从文档中获取的用户限定的资源。若文档中仅有自定义资源,对响应检索是不够的。那些所感兴趣的自定义资源就应该添加到资源高速缓存里,以便在获取结果时能够找到。那些能直接从文档中获取的自定义资源是和文档有关的OLE资源。检索服务器能不使用文档过滤器直接获取OLE资源。然而考虑效率时,你应考虑缓存的OLE资源及非OLE的自定义资源。详述怎样检查可用资源的完整列表和更改储存资源的设置列在监测状态和运行情况的部分。

因为资源高速缓存包含了每个待检索文档的资源,所以它是一个可以和检索内容大小相比较的物理实体。它相当的大,通常不能全部装载在主存之中。因此,它只能部分的在需要时按页调入内存。每一部分是64K大小。你可以通过资源储存映射高速缓存的登记参数来控制这些能同时载入内存的最大页数。装载的部分越多,执行程序时就越好。当然,你也应该为使用更多的物理内存(RAM)而破费。

当每次文档进行添加,删除和修改操作时,资源高速缓存都要被更改。所有的这些修改发生在载入内存的页面,如果这些页面不重入磁盘,资源储存器就发生混乱。当检索服务器突然终止时,它将发现资源高速缓存和检索内容不一致。假如这种情况发生,高速缓存将恢复为最近一次已知的正常状态。需要恢复的信息存储在资源高速缓存的备份文件中。备份文件部分决定了资源高速缓存的重入磁盘频率。备份文件越大,资源高速缓存重入磁盘次数越少。备份文件的大小以操作系统的页数来度量,可由PropertyStoreBackupSize这个注册表参数来控制。操作系统页面大小依赖于处理机结构,可由Windows NT来限定。因为对不同处理机而言,操作系统页面大小会有所不同,故而相同的备份大小参数产生了不同大小的生成文件。

内容检索

内容检索包括了从文档中获取的全部纯文本信息,这些文档在查询时被编排为高效匹配方式。它分布在几个文件中,而这些文件又在一个特殊的路径catalog.wci中。这个路径不能被分在多个驱动器中,应该放在一个固定的(即不可移动的)的本地驱动器中。当这个目录被定义时,这个路径的位置应该被详细说明,即创建完全的路径。假如你选择直接修改位于Catalogs/<catalog>注册表项次关键字的位置参数,务必使限定的目录在最低层包括catalog.wci目录。在catalog.wci路径里不应包含任何别的路径,因为它们是不被检索的。更重要的是,当通过管理工具删除这个目录时,在catalog.wci下创造的路径也将被删除。

在某些形式下,内容检索包含了你的研究材料的完整概要。任何访问这个路径的人都能从检索的文件中得到一部分信息,并且能通过Windows NT的文件访问机构重新建立那些不能访问的文档。你应该保护你的catalog.wci路径,运用适当的安全许可,防止别人滥用

控制属性

检索服务器支持多级目录的创建和使用。尽管每个目录不同,他们仍共享许多共有控制属性。复制那些相同的部分是一种浪费,并且容易出错。因此,所有影响检索服务器目录操作的控制属性在核心位置是可用的。目录可以通过复制特定的属性来选择不同的方面。例如,假如一个目录并不选择存储每个文档的概要,它就可以在它的影响范围内设置相关的属性。当检索服务器需要知道是否一个给定的目录支持文档概要,它首先检查这个目录。假如从目录中那些属性不能直接地使用,它就使用全局属性变量。全局属性变量是和ContentIndex关键字有关的,而特定的目录项和ContentIndex key下的Catalogs/<catalog> subkey有关。

控制属性能被划分为以下几组。为方便起见,只有与检索相关的注册表参数才被划分。检索服务器文档提供了对这些注册表参数的详尽描述,以及默认值和应用最小/最大范围。

与过滤相关的参数控制过滤过程的多个方面。它们是DaemonResponseTimeout, FilterContents, FilterDelayInterval, FilterDirectories, FilterFilesWithUnknownExtensions, FilterRemainingThreshold, FilterRetries, FilterRetryInterval, MaxFilesizeFiltered,和 MaxFilesizeMultiplier.

与语言相关的参数列出了相对于每种安装语言的资源细节。InstalledLangs登记参数列出了语言安装的设置。在InstalledLangs变量中的每个字符串以ContentIndex/Language关键字下的次关键字命名。在每个语言关键字下,可用的参数是SAPIDefaultErrorFile, ISAPIHTXErrorFile, ISAPIIDQErrorFile, ISAPIRestrictionErrorFile, Locale, NoiseFile, StemmerClass, and WbreakerClass。

与索引合并相关的参数控制建立主索引的过程。它们是MasterMergeCheckpointInterval, MasterMergeTime, MaxFreshCount, MaxIdealIndexes, MaxIndexes, MaxMergeInterval, MaxWordlistSize, MinDiskFreeForceMerge, MinMergeIdleTime, MinSizeMergeWordlist, and MinWordlistMemory。

与资源高速缓存相关的参数控制高速缓存可用的内存和提交给磁盘的频率。它们是PropertyStoreBackupSize and PropertyStoreMappedCache。

CPU management parameters control the amount of CPU available to perform specific tasks. They are ThreadClassFilter, ThreadPriorityFilter, and ThreadPriorityMerge.

CPU管理参数控制可执行特殊任务CPU的数量。它们是ThreadClassFilter, ThreadPriorityFilter, and ThreadPriorityMerge。

上面没有提到的其余混合参数与检索相关的。它们是EventLogFlags, GenerateCharacterization, IsapiDefaultCatalogDirectory, IsIndexingNNTPSvc, IsIndexingW3Svc, MaxCharacterization, NNTPSvcInstance, 和 W3SvcInstance.

检索过程

一种枚举机制决定着列在目录下的所有可检索文件,并把它们追加到一队列。文档过滤器打开每个队列文件,并给出包含在内的文档资源及内容。过滤器给出的文本流进入字符管理器,它可以识别文件流中的字符及数字特性。独立于停止表(干扰词汇列表)的特性最终被编为一用来解决疑问的主索引。

主索引的生成是一个多步过程,从文档中取出的单词逐步地从暂住内存的词汇表移往一个中间的相关阴影索引表,并且最终到可高效解决索引问题的永久性主索引表。这种多步过程使检索处理机可快速找到被过滤的文档,就象是逐渐向永久性主索引表靠拢。词汇表、阴影索引表、主索引表的集合被看成是内容检索。通过组合几个资源索引成一个目标索引,把中间数据结构转变为最终形式的催化过程称为合并。这是一个时间和磁盘输入输出都密集的过程,但它亦是必要的。因为结果比发生它的资源要有效的多。索引服务器提供了几种控制合并过程的方式。稍后介绍。

除了完整文本内容之外,过滤器还从文档中获得资源。这些资源将被存储在被优化处理的资源高速缓存中。检索服务器使用资源高速缓存来分解检索,以及从资源存储中回收匹配文档的待索资源。

在这部分中,我们将详细的讨论怎样控制检索过程的每一步。

文档收集

检索服务器通过扫描和消息为检索收集文档。扫描是一个循环的过程,它通过检查所有包含的路径来决定应该检索哪个文档。在Windows NT控制的文件被修改时,它将发送消息。在任何可能的时候,检索服务器都依靠消息,因为这种结构比特定的扫描更有效。

检索服务器执行两类扫描—完全扫描和递增扫描。完全扫描得到所有文档的清单,一般当路径首先添加时执行它。其他执行完全扫描是在严重崩溃的恢复时。

当检索服务器关闭时,它不能跟踪文档的变化。重启时,它需要知道当它不工作时被修改的文档情况,这样它才能更新它的索引表。递增扫描有能力侦测到所有需要重新过滤和检索的文档。在启动时,检索服务器在所有路径里执行递增扫描。即使检索服务器丢失了变化信息,递增扫描仍可以执行。假如文档的修正率很高,或缓冲区用来获取从Microsoft Windows NT的发出的溢出信息,这种情况就可能发生。

你应该在任何检索路径中使用完全扫描和递增扫描。当安装了一个新的过滤器,删除一个过滤器或修改一个过滤器的注册信息之后,应该使用完全扫描。你也可以因为任何别的原因而使用扫描,但是应注意完全扫描将导致在目录中的所有文件被重新检索,这将耗费大量的时间。如何初始化扫描的细节见状态的性能监测部分。

在检索服务器的普通操作中,假如检索的目录运行在Microsoft Windows NT下,目录中所有文档的改变都将被自动的跟踪。注意一个目录可指向一个网络目录。这些网络驱动器可以在诸如Novell NetWare或Microsoft Windows 95文件服务器等系统下运行,这些系统并不支持变化的消息。为了处理这种类型的目录,检索服务器对共享部分进行周期扫描。你可以通过注册参数ForcedNetPathScanInterval控制扫描周期的频率。

文档过滤

文档是由多种格式组成。检索服务器不可能知道所有的文档格式,或限制在一些众所周知的格式。因此,检索模型允许即插方式,也就是从许多格式中得到内容的过滤器。从一个文档中得到文本内容的过程叫作过滤。安装在检索服务器上的默认过滤器能处理Microsoft Office格式的文档(Microsoft Excel, Microsoft Word, and Microsoft PowerPoint)、HTML 3.0或更低版本、文本文档和二进制文件。可以添加别的过滤器,或通过修改注册表取代已存在过滤器。检索服务器文档详细的说明了怎样修改注册表来改变过滤器的DLLs。使用附加的工具,FILTREG(不需要参数)能得到过滤器的列表和列在注册表下的附加项。使用附加工具,FILTDUMP(使用-?)能够知道过滤器(与文件的扩展名有关)将什么内容报告给了检索服务器。

当检索服务器准备过滤一个文件时,它能通过检查文件的扩展名知道文件的格式。注册表包含了文件扩展名与过滤器DLLs之间的联系。检索服务器使用这种联系来决定哪个DLL适合给定的文件。并不是所有的扩展名都在注册表里列出。检索服务器怎样处理未知扩展名的文件?你可以通过注册参数FilterFilesWithUnknownExtensions来控制。在设置时,这个参数使检索服务器以默认的简单文本过滤器过滤文档。

你的资料中可能有几个“二进制”文件。在检索服务器过滤的环境中,二进制文件包含了一些对于检索无用的原文信息。你能识别这些文件,而且能使它们被一些名义上的过滤器所过滤。这样能获得简单的文件属性,如文件大小和文件名,因此,你仍然能通过寻找它的属性来找到二进制文件。你可以在你的资料中确定出所有的二进制文件,也可在注册表中确定扩展名。例如,扩展名是“.nul”的二进制文件类型,用二进制文件的默认字符串变量BinaryFile添加一个.nul的次关键字,如下所示。

HKEY_LOCAL_MACHINES/Software/Classes/.nul = REG_SZ BinaryFile

一个过滤器不能过滤的文件,可以尝试多种方法来过滤它。注册表参数FilterRetries控制过滤方法的最大数目。假如一个文件用已有的方法不能过滤,那么它就是不可过滤的。文件也可以不经过滤而保留,因为它们是损坏的。当过滤器发现一个损坏的文件,它就在事件日志中写下此事件。你可以打开检索服务器的管理页,为不可过滤页发出一个请求。这个请求将列入所有的非过滤文件。注意,有口令保护的文件是不能过滤的。你可以通过使用注册表里的EventLogFlags变量来控制产生与过滤相关的事件记录消息。检索服务器文档详细阐述了怎样配置这个参数。

检索服务器使用了一个子进程CiDaemon来过滤文档。这个进程墙保护检索服务器进程CiSvc免除能破坏相关进程的易产生错误或有害的过滤器DLL。检索服务器给子进程提供一个待过滤文件表。过滤进程过滤这些文件,并给检索服务器进程提供内容。若过滤进程因某种原因而终止,父进程CiSvc将自动终止它。

若一文档在过滤时和其文件大小相比给出了太多数据,检索服务器通过终止此过滤过程来免受侵害。多少数据才算过多呢?你可通过注册表参数MaxFilesizeMultiplier来控制。

你可通过注册表参数ThreadClassFilter和ThreadPriorityFilter来控制过滤过程的步速。

词法分析

从每个文档中获取的文本可以是任何语言的。检索服务器2.0支持的语言有英语、汉语、法语、德语、朝鲜语、西班牙语、意大利语、荷兰语、瑞典语和日语。对于每种支持的语言,检索服务器提供了下面讨论的所有工具。你可以只安装你感兴趣的语言,检索服务器使用国别信息来识别文档所用的语言,并且可以选取适合此语言的词汇工具。文档的默认国别是文档所处的服务器的国别。使用MS.Locale meta tag可以使个人的HTML文件突破此默认值。

从文档中得到的原文被一个词法处理器操作,它可以识别文本流中的词汇。但是,检索服务器2.0不允许安装自定义的处理器。不然的话,你就可以控制被处理器所识别的词汇,短语,数字和其它特征。

文档通常包含了几个经常出现的单词,这些单词在区分文档是并没有太大的作用。检索中指定特殊词的意义在于可把包含这些词的文档(它们对用户有潜在兴趣)和其余文档区分开。如果一个常用词,如“this”,出现在检索中,就有可能匹配资料中所有的文档。因此,“this”就没有什么区分意义,故被称为干扰词。大多数查找方法允许你从检索中排除掉这些干扰词。干扰词列表也称为停止列表,因为它们阻止了干扰词进入索引中。但哪些可作可接受的干扰词?你应能从你的用户目的及资料主题范围来确定。例如,在包含有C++代码的文件中,因为“this”在C++程序中有特定意义,所以不能把它放入停止列表。如果你不能确定一个词是否可作为干扰词,你最好小心谨慎不把它放入停止表。

干扰词的明智抉择提高了检索文档集合的质量,进而提高用户对你检索方法的满意度。因为干扰词经常出现,所以在索引中剔除它们可明显地减小索引大小。较小的索引可提高检索服务器的性能。值得注意的是,这个较高的性能只是停止表的可取的副作用。对检索方法的用户经验才是主要目的。

除去干扰词只发生在文件过滤时。如果你在已建立索引时更改停止表,则检索服务器重起后会影响已过滤的文档。要想从修改的停止列表受益,必须重新扫描所有的目录。

检索服务器Language/<language>下的注册表参数NoiseFile标明的一个文件中得到所有的干扰词,这个参数是ContentIndex下的次关键字。

词汇表的生成

一旦文档被词汇处理器过滤处理,结果词汇被放入词汇表。词汇列表是暂时的内存索引,为较少的文档作为高速缓存数据。任何给定时间,内存中都有几个词汇列表。你可使用词汇表来从事经典的内存与速度的权衡问题。MaxWordLists与MaxWordListSize这两个参数控制着可被词汇表所用的最大内存。MaxWordLists是在初始化把数据放入阴影检索的阴影合并前,检索服务器可在内存中维系的最大词汇表数。MaxWordListSize是内存可用来容纳词汇表的最大量。当词汇表所用内存增加时,将导致检索服务器基于磁盘的阴影合并次数减少。相反,减少词汇表可用内存,使磁盘操作增多。其他两个参数,MinWordlistMemory与MinSizeMergeWordlists帮助控制词汇表所用内存。MinWordlistMemory是词汇表生成所用的最小空闲内存量。MinSizeMergeWordlists是激发阴影合并的词汇表的最小组合大小。

阴影索引的生成

当词汇表的数目超过了MaxWordLists或所耗内存超过了MinSizeMergeWordlists,就应做阴影合并。作为内存中的数据,词汇表可快速编辑,同时不能被很好的压缩。也不能幸免于检索服务器的关闭和重起。持久数据解决了这些问题。朝这方向的第一步是阴影检索的生成。阴影检索是由合并词汇表或合并阴影索引为一个索引所生成的持久性索引。

生成阴影索引的过程称为阴影合并。这种快速操作始终作用于词汇表,清除所占内存。阴影合并所用的资源索引通常是词汇表。但是,如果阴影索引的总数超过了MaxIndexes,其中一些也会阴影合并的资源索引。

一种特殊的阴影合并,叫做退火合并(annealing merge),是在系统空闲超过一定时间和相关索引次数超过MaxIndexes时执行。注册表参数MinMergeIdleTime确定了时间片内(由注册表参数MaxMergeInterval控制)必须空闲的处理机时间百分比,这样激活退火合并。退火合并通过减少阴影索引次数来提高索引性能以及所用磁盘空间。

主索引的生成

主索引是索引服务器生成的所有词汇表的最终目标。这是一个压缩的相当好的持久数据结构,用来有效地解决索引问题。主索引从所有的已存在的阴影合并生成,当前进程内的主索引称为主合并。主合并是一个相当消耗时间和磁盘输入输出的操作。当合并完成时,资源被释放,中间的阴影索引被删除。最终,检索速度比以往有所提高。

主合并作为一个占用资源密集的进程,必须有相当好的鲁棒性,以使环境可控。可通过注册表参数ThreadPriorityMerge来控制索引过程的步速。如果你对当前步速不满意,可不顾进行的主合并就停止索引服务器,并更改这个参数。当索引服务器重起时,合并会继续进行。主合并还可以幸免于一些不可预料的事件,如磁盘满或突然系统中断。重启后,主合并从以往停留出开始。索引服务器在主合并启动,重启或停止时,把事件写到事件日志中。

你可以通过控制不同的参数来触发主合并的启动。主合并因下列原因而启动。

主合并的日常维护。每日可在特定时间进行。注册表参数MasterMergeTime,指午夜后应发生合并的分钟数。默认是午夜进行。这个值应调整到服务器负载最小时。

从上一次主合并以来更改的文档数称为FreshCount。FreshCount越大,以词汇表形式所用的内存就越多。可通过注册表参数MaxFreshCount来控制FreshCount的最大值。当FreshCount超过MaxFreshCount时,就执行主合并使FreshCount减为零,这样减少了索引服务器所用内存。调整MaxFreshCount时要基于所拥有的内存。MaxFreshCount越大,就假定了有充足的内存,索引速度亦更快。

词汇表占内存空间,而阴影索引占磁盘空间。对于大型或动态的资料集,可能有很大的磁盘空间被阴影索引暂时占用。为避免磁盘满问题,应通过注册表参数MinDiskFreeForceMerge来控制阴影索引所用的磁盘空间。目录驱动器上的磁盘空间小于MinDiskFreeForceMerge和阴影索引所占的累积空间超过MaxShadowFreeForceMerge时,主合并就被启动。

当阴影索引所占的磁盘空间超过注册表参数MaxShadowIndexSize时,亦启动主合并。这种条件比前者有较高的优先级。

最后,你可采用管理工具来强加一主合并。在期望高检索负载时,适合这样做。尽管主合并资源占用密集,但最终结果提高了索引响应时间。

监测状态和性能

有三种方式可管理索引服务器—使用Microsoft Management Console (MMC)的索引服务器snap-in;使用索引服务器管理页(为索引服务器程序组提供);使用注册表编辑器如RegEdit来直接编辑。使用MMC snap-in也许是三者中最简单的。它也是推荐用的工具,因为未来的基于Windows NT的管理工具将是基于MMC的snap-ins。你可在便捷的同时有一个领先的开端。这三个工具都允许管理远程服务器上的索引服务器。我们在此文中只讨论索引服务器的MMC snap-in。

使用snap-in,你可以完成以下任务:

创建和删除目录

启动和停止服务

监视所有目录的状态

在路径中初始扫描的同时增加和删除路径

修改在高速缓存中存储资源的设置

在安装成功后,在位于Windows NT选项压缩程序组下的“微软检索服务器”程序组中,检索服务器创建一个标为“检索服务器管理者”的项目。你可使用此项目来启动检索服务器snap-in。也可以使用“Add/Remove Snap-in …”菜单来单独把检索服务器snap-in加载入MMC,此菜单项位于Console主菜单项下。点击Add Standalone Snap-in对话框的Add…钮,同时从列表中选取检索服务器。

目录管理

通过snap-in生成目录简单。只需提供目录名和标出索引文件位置。稍后你可添加路径和修改资源高速缓存。Snap-in存储了注册表中目录的所有细节,并且在特定的位置生成一名为catalob.wci的物理路径。目录删除则更简单。右击目录图标,请求删除。这使得snap-in清除掉注册表中的所有项目,删除catalog.wci路径。如果目录被删除时检索服务器正在运行,snap-in在物理删除条项和文件前等待其停止。

路径管理

一旦你创建了一个目录,你可以定义你的资料。检索服务器2.0支持由Web服务器,网络新闻传送协议(NNTP)服务器,Windows NT操作系统等管理的内容。你可使用snap-in从这些资源中任一个中获取内容。

为了包括由Web和NNTP服务器管理的内容,打开目录的资源对话框,选择Web标签。假如你要检索一个Web站点,就检查跟踪虚拟的基本段,以及选择你要跟踪的虚拟服务器。假如你要知道一个NNTP站点,就检查跟踪NTTP的基本段按钮,以及选择你要跟踪的NNTP服务器。

为了获取被Windows NT文件系统管理的文件内容,可打开文件夹,找到下一级文件夹。通过添加路径的对话框来添加路径,这个对话框可在下一级文件夹下右击打开。对话框也允许你选定远程路径。

属性高速缓存管理

如果你的文档中有要回收到结果集或在属性变量索引中用到的标准属性,这些应为属性高速缓存所知。使用检索服务器snap-in,可以观看所有的已知属性和其定义,还可从高速缓存添加或删除属性。检索服务器工作时应能使已知属性可被枚举。

所有的高速缓存属性在Cached Size列中有一个非零值。有空列的或有零值的属性不被放入高速缓存。打开你感兴趣属性的“Properties”对话框。为把属性放入缓存,检查“Cached”框,给属性提供大小。除了字符串属性,大多数的数据类型有一个固定大小,所以很容易确定此项。对于超出特定大小的字符串属性,检索服务器会处理此溢出。这意味着你不必为字符串属性类型设置最大值。只需选一平均值。选一较大值浪费空间,并导致运行效率低。选择较小值并不浪费空间,但因为过多的溢出处理而降低效率。

关于字符串大小的讨论是更为重要的,因为安装在检索服务器2.0上的HTML过滤器仅仅将HTML元标记变量作为字符串报告。典型的Web站点的资料大多都是HTML文档,因此包含HTML文档的定制属性将被作为字符串报告。对于每个字符串来说,明智的大小选择是使其在执行是有比较明显的区别。

当你对缓存属性作了所有的更改,使用Commit Changes的菜单选项提交这些变化。这个菜单选项在Task菜单下,此菜单是在右击“Properties”子文件夹后弹出的子菜单的一部分。提交使更改有效。检索服务器生成新的属性高速缓存,为每一个缓存属性提供空间,并把已存在的缓存属性值复制到新的缓存的每一个已被检索过的文档中。此过程相当费时,因此应减小提交的属性缓存数。可采用批处理所有的修改以及以一个单独的部分提交它们。

一个文档过滤器在过滤中获取属性。因此,当你往高速缓存属性设置中增加新的属性时,所有以前过滤的文档的属性将是空值。只有以后过滤的文档才能从过滤中获取适当的值。这将导致不正确的结果设置,因为用户希望非空的属性值实际上是空的。为了避免这种情况,你必须在所有的路径下进行一次完全扫描,以便它们被重新过滤。通过Task菜单选项可以进行扫描,当你在选中的目录上单击右键时,就回弹出这个菜单。假如你的提交只能使已存在的属性从高速缓存中去掉,你就没什么可做的了。那些不必要的属性已经从高速缓存中去掉了,以后也不会再放入缓存中。

监测执行

对于过滤进程和检索进程,检索服务器提供了执行计数器。这些计数器能在Windows NT监控程序perfmon.exe中使用。

与过滤相关的计数器被两个进程分开了。这种追踪文件进程的计数器在内容检索对象下。它们是过滤文档的#,被过滤的文件,文档的整个#。这种计数器直接和内容检索过滤对象下的过滤相关。它们是每毫秒的绑定时间,每小时的过滤速度,和单位为兆字节每小时的总过滤速度。

与检索和合并相关的计数器在内容检索对象下。它们是以兆字节计算的检索大小,持久检索的数量,合并进程百分比,和在内存中词汇列表的数目。

事件记录日志的消息

检索服务器的系统错误将被报告到Ci过滤服务和Ci服务目录下的Windows NT应用事件记录日志中。报告的包括过滤问题,超出资源使用范围,检索文件损坏等等。检索服务器的文档包括了一个所有消息的详细列表以及合适的操作。

目录设计

通过检索服务器的 snap-in创建和删除目录是一件很容易的事。但这并不是想象的那么简单。除非你创建一个原样的检索方法或以一个小的文档资料工作,否则你需要花一些时间设计你的目录和一些配置,比如使用,运行,大小和维护。下面关于选择硬件,决定单个和多个目录,目录增长的讨论涉及检索服务器很多具体的主题。大多数主题也许将应用于任何基于Windows NT的服务器,虽然它们很重要,但不在这里一一讨论。你可以在位于Windows Resource Kits下的MSDN库的其余部分找到关于这些主题的讨论。

硬件配置

检索服务器能有效的使用多个处理器和大量的RAM。它占用的资源越多,工作的情况就越好。检索服务器花费很多磁盘I/O。在典型的配置中,磁盘I/O比其他因素更能调节全部的检索过程。磁盘驱动器越快,它们所在的的总线越快,则检索的过程就越快。你也可以使用磁盘剥离以提高I/O的吞吐量。对你的资料和目录使用Windows NT File System (NTFS)。这样做比FAT文件系统更具有可测性,性能和安全性。

什么是磁盘镜象?检索服务器产生的检索能完全地从注册信息和资料中得到。因此,磁盘镜象对资料和Windows NT注册表并不象对检索服务器目录一样重要。考虑到镜象为获得基于容余的可靠性会带来牺牲吞吐,也许此代价不值得。另一方面,镜象并不减小丢失检索数据的可能。在服务器停工期不能容忍的环境,这可能是一个足够好的理由。毕竟,从镜象磁盘挽救索引比从资料中重新获得要快得多。

一个目录或多个目录?

在任何可能的时候,都应该用一个目录来代替多个目录。这样做有几个好处。有一些情况下多级目录是一个较好的选择,但深入观察会驱使你选择单独的目录。我们将首先讨论使用一个单独的目录的好处。然后讨论多级目录有好处的情况。

使用单个目录的主要优势是管理简单化。一个目录的初始安装,配置和日常的维护都不要求过多的管理。假如你不得不操作好几次的话,一些琐碎的事情会增加工作量。相对于多个目录来说,处理单独的目录并没有什么不同。

使用单独的目录的另一个优势是可提高性能,减少工作量。当检索服务器启动和运行时,每个活动的目录被装载到内存里。假如分布在多个目录中的相同内容被统一在一个单独的目录里。检索服务器将把资源集中到单级目录里,这样提高了性能。

最后,假如你要使你的资料成为一个单独的实体,最好的办法是使用一个单独的目录。检索服务器2.0并没有能力从多个目录里合并结果的设置。你可以从不同的目录里合并结果的设置,并且也可以使用脚本传送单独的结果设置,但同时也增加了查询往返的时间。假如你只有一个单独的目录,检索服务器在内部就处理了排序和合并。这比基于脚本的排序和合并更有效率。

假如你有一份在一个服务器下难以很好运作的巨大资料,就不能使用单个目录。在这种情况下,一个大范围的解决办法,比如Microsoft Site Server Search,要比使用ad hoc 脚本连接目录要好的多。

一个典型的组织,无论大小,都应该满足用户设置的需要。例如,你的组织只有仅供工程部门使用的技术文档和仅供法律部门使用的法律文档。这两种用户的文档设置是相互独立的。很显然,你只能用一种办法来解决这种情况,那就是每个部门建立一个目录。其实完全不必这样做。检索服务器允许使用路径来分割你的资料。你可以使用一个单独的目录,以及使用两个不同的路径,让每种文档设置对应一个目录,提供相似检索脚本的两种不同的设置,每一种情况对应一个合适的路径。假如涉及到安全性,你也许在文档中已经拥有了正确的许可。检索服务器以Windows NT的安全性而闻名,它不允许访问一些不能访问的文档。需要更多的说明吗?相同的组织也许有第三种文档设置,即对所有组都有兴趣的新文章。当用到多种目录时,你可以创建第三种目录,或者在每个目录里检索同一篇文章两次。然而,使用单个目录,你只需要一个包含两种脚本设置的目录。

假如因为某种原因你需要在服务器上建立多个目录,应记住不需要时不把目录激活。在Catalogs/<catalog> 的子关键字下的CatalogInactive参数为1,使目录不激活。检索服务器再次启动时,交互的目录将不会被装载。

假如你的资料相对于你已有的服务器太大,在分割资料到几个小的服务器之前考虑一更大的规模。获得合适服务器的代价比多个服务器处理要低。

目录增长

你的资料大小持续的增加是偶然的。因此检索服务器产生的检索必须跟上增长的资料。检索服务器2.0的重要限制是检索只能驻留在单个的驱动器里。假如这个驱动器已满,即使别的驱动器中剩余的巨大空间也是不行的。在可预见的将来选择供索引的足够空间。那么到底需要多大的磁盘空间呢?这依靠你的资料原文的大小和你储存在属性高速缓存中的的属性。检索服务器的默认设置,是预料索引是资料大小的百分之四十。

资料增加的另一个方面新文档格式的可能引入。当引入一个新的文档格式之前,一定要确定文档过滤器对此格式是有效的。

故障排除要点

当你检索已知存在和包含索引中所用关键字的文档时,会出现大多数的故障特征。如若没发现文档集,则采用如下故障排除算法。使用之前阅读所有的步骤。稍后步骤将更适合你的环境。

查看CI生成事件的应用事件日志。必要时标处错误。

文件是否有导致不被过滤的扩展名?使用过滤器枚举工具FILTREG来查看检索服务器在注册表里的内容。

文件是否有口令保护?过滤器不能访问有口令保护的文件。

是否检索服务器仍在扫描?偶然的情况是丢失的文件不被检索。等待扫描完成(查看由MMC snap-in报告的目录状态)。

检索服务器在响应查询时是否返回“Index is out of date”的信息?假如返回,偶然的情况是丢失的文件不被过滤。等待过滤所有的文件。

使用管理页对未过滤文档进行查询。这是一个检索服务器不能过滤文档的列表。文件也许有不能识别的扩展名而不能被过滤。或者因为文件的格式不能识别或文件损坏使过滤器不能过滤。检索服务器也可以通过挂断和其大小相比给出了过多信息的文档,使自己免受危害。

是否所有的文件都来自相同的路径?假如是,有可能这条路径不被扫描。检查确认这条路径是否被包含路径的设置所覆盖。注意如果它们被覆盖,在catalog.wci下的路径就不会被过滤。假如一条路径被覆盖,检查它对于如Windows Explorer和Dir等程序是否是可见的。假如一切都正常,在所有影响的路径中强加一次扫描。

如果包含丢失文件的路径是一远程路径呢?那么,因不正确的用户名而也许不被检索。当选定远程路径的登录ID时,应使用局域/用户格式输入局域名和用户名。注意到如果计数是计算机局域的话,局域名也许实际上是计算机的名字,

在文件里使用FILTDUMP,并检查输出。在转储里所有的关键字是否都出现?假如应该出现而实际上并没有出现,就应该检查过滤装置。

假如这些词汇在过滤器的输出里,那么索引里有可能不包括它们,因为它们被认为是干扰词汇。检查干扰词汇列表,必要是应改变它。

是否不同的语言用来过滤文件和提出查询?词汇分析是一个依靠语言的过程。当用一种语言提出查询,而用另一种语言过滤文档时,查询结果是不可预知的。有一些文件格式,比如Microsoft Word,用一种语言标识文档,这种标识被用在过滤器里。另外的格式,比如简单的文本,没有包含任何语言分类符。对于这些文件来说,大多数过滤器默认为这些文件所处的系统。查询的位置用CiLocale的变化来明确。假如CiLocale是不明确的,那么浏览的位置被用作(如果可能)或默认为服务器的位置。

每个文件都被正确检索是可能的,但是并不一定能得到所期望的结果,因为你没有正确的许可。

也许查询是不合适宜的,或者检索服务器认为过于复杂。在这两种情况下,你应该接受这种影响而造成的错误。参考检索服务器的文档来认识什么时候出现这类错误及采取什么措施去避免它们。

致谢

我要感谢thank David Lee, Kyle Peltonen, Susan Dumais提供的宝贵资料。

0 0

相关博文

我的热门文章

img
取 消
img