用于搜索的后退机制的制作方法

文档序号:6553824阅读:192来源:国知局
专利名称:用于搜索的后退机制的制作方法
用于搜索的后退机制
背景
某些设计用于个人计算机(包括膝上型/笔记本计算机和手持式计算设备、以 及台式机)的操作系统具有全文搜索系统,该系统允许用户搜索保存在个人计算机 文档文本中的一个或多个搜索单词。某些全文搜索系统包括索引子系统,该子系统 基本地检查保存在个人计算机中的文档并将该文档中的每个单词存储在索引中,以
便用户可以使用关键词执行索引搜索。该索引进程进程是中央处理单元(CPU), 而且是输入/输出(I/O)密集的。这样,若用户在正执行索引进程的同时想执行另
一个动作,则该用户将会体验到处理该动作的延时,这样就会对"用户体验"产生 负面影响。
将索引进程中响应于用户活动的延时降到最低的一种方法是在检测到用户活 动时暂停该索引。全文搜索系统可包括检测用户活动并"预测"用户活动何时已结 束(或空闲周期)进而重启该索引进程的逻辑。当检测到用户活动时,可暂停索引 进程,但通常仍存在从索引进程转换到暂停状态的延时(例如,为了完成当前正作 为索引进程的部分而被执行的操作或任务)。进而言之,若空闲周期的预测有误, 则索引进程引起的前述延时会劣化用户体验。更进一步来说,用于检测用户活动和
空闲周期的逻辑增加了全文搜索系统的复杂度,并消耗CPU资源。尽管论述了传
统系统的某些缺点,但该背景信息并不旨在标识必需由所声明主题来解决的问题。 概述
提供本概述来引入简化形式的一组概念,这些概念将在详细描述部分中进一 步描述。本概述并不旨在标识所声明主题的关键特征或本质特征,也不是旨在用于 辅助确定所声明主题的范围。
根据所述不同实施例的各方面,索引文档是通过使用低优先级I/O请求来执行 的。该方面可在具有支持至少两个对其归档系统(filling system)进行I/O请求的 优先级的操作系统的系统中实现。在某些实施例中,低优先级i/o请求用于访问要 索引的文档以及将信息写入索引中,而较高优先级请求则用于响应用户询问而访问索引的I/0请求。而且在某些实施例中,1/0请求优先级可基于每个线程来设置, 而与基于每个进程(可以为其希望分配不同优先权而产生两个或多个线程)来设置 相对。
这种实施例可被实现为计算机进程、计算机系统(包括移动手持式计算设备) 或者诸如计算机程序产品这样的制造物品。计算机程序产品可以是计算机系统可读
并且编码指令计算机程序以执行计算机进程的计算机存储介质。计算机程序产品也
可以是计算系统可读并且编码指令计算机程序以执行计算机进程的载体上传播信
参考以下附图对非限定性和非穷尽的实施例进行了阐述,其中若非特别指出, 则各视图中类似的参考数字代表类似的部分。


图1是依照一个实施例示出了一示例性系统的图示,该系统具有搜索/索引进 程以及支持高和低优先级I/O请求的文件系统。
图2是依照一个实施例示出了一个示例性搜索/索引系统的图示。
图3是依照一个实施例示出了将I/0请求发送到文件系统的索引进程的操作流 程的流程图。
图4是依照一个实施例示出了文档索引操作流程的流程图。 图5是依照一个实施例示出了适用于实现图l一5的系统和操作流程的一个示 例性计算环境的框图。
具体实施例方式
以下将结合作为本发明一部分并示出用于实践本发明的特定实施例的附图而 更详尽地描述各个实施例。然而各实施例被实现为许多不同的形式并且不应将其解 释为被限制在此处描述的实施例;认识提供这些实施例以使得本公开变得透彻和完 整,并且将本发明的范围完全传达给本领域普通技术人员。这些实施例可被实践为 方法、系统或设备。因此,这些实施例可采用硬件实现形式、整个的软件实现形式 或者结合软件和硬件方面的实现形式。因此,以下详细描述并非是局限性的。
不同实施例的逻辑操作被实现为(a)在计算系统上运行的计算机实现的步骤的 序列和/或(b)计算系统内部的互连机器模块。具体实现的选择取决于实现实施例的 计算系统的性能需求。因此,在此描述的组成这些实施例的逻辑操作另外还可被称为操作、步骤或模块。
图1示出了支持对索引文档的低优先级I/0请求以供搜索的系统100。在此示
例性实施例中,系统100包括用户进程102-1到102-N、支持高和低优先级I/O请 求的文件系统104 (如使用高优先级I/O请求队列106和低优先级I/O请求队列 108),以及可用于存储要被索引的文档以供搜索的数据存储U0(如磁盘驱动器)。 任何支持高和低优先级I/0请求的合适的文件系統都可用来实现文件系统104。在 一个实施例中,文件系统104实现了如美国专利申请公布第US2004/0068627A1中 所述的高和低优先级I/O请求队列106和108,该申请于2004年4月8日出版且 标题为"Methods and Mechanisms for Proactive Memory Management"。
尽管上面使用了术语"低优先级"和"高优先级",但是该术语是用作相对
术语,这是由于低优先级i/o请求具有比高优先级i/o请求更低的优先级。在某些
实施例中,可使用不同的术语,例如"普通"和"低"优先级。在其它实施例中,
可能有两个以上可用于i/o请求的优先级。在这样的实施例中,用于索引的i/o请求可能以最低的优先级被发送,从而允许来自其它进程和/或线程的I/O请求以更
高的优先级被发送。
在这个示例性实施例中,用户进程102-N是用于索引文档以供搜索(如文档 的全文搜索)的索引进程。举例来说,索引进程102-N可将文档的所有单词写入 到索引中(对存储在系统100中的所有文档重复这一过程),随后就可用于对存储 在系统100中的文档进行全文搜索。
其它用户进程(如用户进程102-1和102-2)可以是与文件系统104进行交互 以访问存储在数据存储110中文件的任何其它进程。由于用户活动的不同,可能执 行许多用户进程,可能执行少量用户进程,或者在某些情况下,只执行索引进程 102-N (若数据存储110中的所有文档已被索引则则终止)。
在操作中,用户进程102-1到102-N通常会如箭头112-1到112-N所示时不时 地将I/0请求发送到文件系统104。对许多用户进程而言,这些I/0请求可用高优 先级来发送。诸如响应用户输入的应用程序(如,字处理器)、播放媒体的媒体播 放器应用程序、下载网页的浏览器之类的前台进程通常会以高优先级发送I/O请 求。
然而,依照本实施例,所有由索引进程102-N发送的I/O请求都以低优先级 发送并且如箭头114所示被添加到低优先级I/0请求队列108中。这样,来自索引 进程102-N的I/O请求会在高优先级I/O请求队列106中的所有高优先级I/O请求已被服务之后执行。该特征能够有利地减少在某些实施例中由索引进程导致的用户 体验劣化。此外在某些实施例中,先前讨论的空闲检测逻辑被排除,藉此降低索引
子系统的复杂性。更进一步来说,使用低优先级i/o请求来索引进程避免了通常出
现在空闲检测方案中的检测空闲周期内的差错以及暂停索引监测的延迟之类的问 题。
图2依照一个实施例示出了一个示例性搜索/索引系统200。在这个实施例中, 系统200包括全文搜索/索引进程(或主进程)202、全文索引沙盒(sandbox)进 程(或沙盒进程)204、文档存储206以及全文目录数据(或索引)存储208。在 该实施例中,主进程202包括高优先级I/O询问子系统(或询问子系统)210以及 低优先级I/O索引子系统212。沙盒进程204用于隔离将不同格式的文档转换为纯 文本的组件,在此实施例中,沙盒进程204还包括低优先级I/O索引/过滤子系统 (或过滤子系统)214。
在这个实施例中,询问子系统210处理来自用户并经由接口 216接收到的搜 索询问。用户可输入一个或多个关键词用以搜索存储于系统200中的文档。在某些 实施例中,对经由接口 216接收到的询问做出响应,询问子系统210可处理各询问 并经由高优先级I/0请求来访问索引数据存储208。例如,询问子系统210可以为 一个或多个关键词搜索索引并从该索引中获取包含该一个或多个关键词的一个或 多个文档的列表。在可以为进程和/或线程选择CPU优先级的实施例中,询问子系 统210可设置用于高优先级CPU处理。这样的配置(即,将I/0和CPU优先级设 置为高优先级)是有利的,因为用户通常想要尽可能快的搜索结果并希望利用所有 系统资源进行搜索。
在这个实施例中,低优先级I/O索引子系统212建立用于文档的全文搜索的索 引。例如,低优先级I/0索引子系统212可从沙盒进程204中获取数据(例如,单 词和包含这些单词的文档的文档标识符),然后在索引数据存储208中恰当地存储 该数据。将数据写入到索引数据存储208相对地是I/O密集的。建立索引(例如, 决定哪些数据要被存储在索引存储器208中,以及如何将这些数据存储在索引存储 器208中)则相对地是CPU密集的。依照本实施例,低实施例I/0索引子系统212 使用低优先级I/O请求在索引存储器208中存储数据。在可为进程和/或线程选择 CPU优先级的实施例中,低优先级I/0索引子系统212可被设置用于低优先级CPU 处理。这样的配置(即,将I/0和CPU优先级设置为低优先级)是有利的,原因 用户通常希望对用户活动做出快速响应(例如,执行应用程序、播放媒体、文件下载等的用户输入)并希望延迟该索引进程。
在这个实施例中,过滤子系统214从文档存储器206中检索文档并处理这些 文档以提取低优先级I/O索引子系统212建立索引所需的数据。过滤子系统214从 每个获取自文档存储206的文档中读取内容和元数据并从这些文档中提取单词,这 样用户就可使用询问子系统210对这些文档进行搜索。在一个实施例中,过滤子系 统214包括过滤组件,该过滤组件可将文档转换为纯文本,执行拆词 (word-breaking)进程,并将该单词数据置于管道中以便可用于低优先级I/O索引 子系统212来建立索引。在其它的实施例中,拆词是由低优先级I/O索引子系统 212来完成的。
尽管已用特定的模块或组件示出并描述了系统200,然而在其它的实施例中, 描述用于这些组件或模块的一个或多个功能可被分解到另一组件或模块中,或者组 合成更少的模块或组件,或者被省略。
示例性"l/0请求"操作流
图3依照一个实施例示出了将I/O请求发送至文件系统的索引进程的操作流 300。操作流300可在任何合适的计算环境中执行。例如,操作流300可通过诸如 系统200的主进程202 (图2)这样的索引进程来执行,用以处理存储在系统数据 存储上的一个或多个文档并创建用于对被存储的一个或多个文档执行全文搜索的 索引。因此,操作流300的描述可以涉及图2组件的至少一个。然而,任何对图2 组件的这种参考仅用于描述目的,并且应当理解图2的实现对操作流300的环境没 有限制。
在框302中,索引进程等待I/0请求。在一个实施例中,索引进程被实现为主 进程202 (图2),其中低优先级I/O请求可由索引子系统生成,而高优先级I/O
请求可由搜索询问子系统生成。例如,索引子系统可由诸如低优先级i/o索引子系
统212这样的索引子系统和诸如过滤子系统214这样的过滤子系统一同来实现。搜 索询问子系统可使用任何合适的询问处理组件(如询问子系统210)来实现。操作 流300可前进到框304。
在框304中,决定I/0请求是否来自索引子系统。在一个实施例中,索引进程 通过检査请求源来决定I/O请求是否来自索引子系统。继续有关框302的上述示例,
若例如i/o请求是来自索引子系统的要将信息写入到索引中请求,或者若I/0请求
是来自过滤子系统的要访问存储在文档数据存储中的文档的请求,则索引系统将确 定该I/O请求是来自索引子系统的,并且操作流300可前进到将在下面进一步说明的框308。然而,若例如I/0请求是来自询问子系统的要为一个或多个特定单词搜
索索引的请求,则索引系统将确定该I/O请求并不是来自索引子系统,而操作流 300可前进到框306。在一个实施例中,操作系统可被实现以允许基于每个线程而 不是基于每个进程来设置归档系统I/O请求的优先级。该特征可有利地用于某些实 施例,在这些实施例中询问子系统和索引子系统是部分相同的进程(如图2的主进 程)以允许用户初始化的询问1/0请求以高优先级发送,而索引子系统初始化的I/0 请求则以低优先级发送。
在框306中,1/0请求以高优先级发送到文件系统。在一个实施例中,索引系 统将I/0请求发送至诸如高优先级I/0请求队列106 (图1)这样的高优先级队列。 随后操作流300可返回到框302以等待另一个I/O请求。
在框308中,1/0请求以低优先级发送至文件系统。在一个实施例中,索引系 统将I/0请求发送至诸如低优先级I/0请求队列108 (图1)这样的低优先级队列。 随后操作流可返回到框302以等待另一个I/O请求。
尽管按照特定的顺序示出并描述了操作流300,然而在其它实施例中,各框中 描述的操作能以不同的顺序、多次和/或并行来执行。此外在某些实施例中, 一个 或多个框中描述操作可被分入另一框中,被省略或被组合。
示例性"文档索引"操作流
图4依照一个实施例示出了索引文档中的操作流400。操作流400可在任何合 适的计算环境中执行。例如,操作流300可由诸如系统200的主进程202 (图2) 这样的索引进程来执行,以处理存储在系统数据存储中的一个或多个文档并创建用 于对所存储的一个或多个文档执行全文搜索的索引。因此,操作流400的描述可参 考图2组件中的至少一个。然而,对图2组件的任何这类参考是仅用于描述目的, 并且应当理解图2的实现对操作流400的环境并无限制。
在框402中,从文件系统中获取文档。在一个实施例中,诸如系统200 (图2) 这样的索引系统从诸如数据存储206 (图2)这样的文档数据存储中读取文档。依
照本实施例,使用低优先级i/o请求从数据存储中读取文档。例如,索引系统可包
括诸如过滤子系统214 (图2)这样的过滤子系统,该过滤子系统可生成从文档存 储中读取文档的I/O请求。这一索引系统可被配置用于检测来自过滤子系统的I/O
请求(相对于询问子系统而言)并将它们作为低优先权i/o请求发送至归档系统。
操作流400可前进到框404。
在框404中,在框402中获取的文档被转换为纯文本文档。在一个实施例中,在文档被读取到存储器中后,上述过滤子系统将该文档转换为纯文本文档。例如, 该文档可包括格式化的元数据、标记(若该文档是标记语言文档)等,外加文本数
据。操作流400可前进到框406。
在框406中,处理在框404获取的纯文本文档,将该纯文本文档分成单独的 词(即,执行拆词进程)。在一个实施例中,诸如低优先级I/0索引子系统212 (图 2)这样的索引子系统可执行拆词进程。另外,依照本实施例,被分开的各词随后 使用低优先级I/0请求存储在索引中。继续为框402描述的示例,上述索引系统(包 括索引子系统)被配置用于检测来自索引子系统的i/o请求。在这一实施例中,索 引系统发送检测到的从索引子系统到归档系统的I/O请求作为低优先级I/O请求。 操作系统400可前进到框408。
在框408中,决定是否有更多要检索的文档。在一个实施例中,索引系统通 过检查上述文档数据存储中是否还有尚未被索引文档来决定是否有更多要检索的
文档。例如,上述过滤子系统可用低优先级i/o请求来检查文档数据存储。若决定
存在-一个或多个要索引的其它文档,操作流400则可前进到框410。
在框410中,选择下一个要索引的文档。在一个实施例中,上述过滤子系统
从要索引文档数据存储中选择下一文档。操作流400可返回到框402以索引该文档。 然而,若在框408中决定没有其它要索引的文档,操作流400则可前进到框
412,在那里完成索引进程。
尽管这里以特定的顺序示出并描述了操作流400,然而在其它实施例中,框中
所述操作能以不同的顺序、多次和/或并行执行。进一步来说,在某些实施例中, 一个或多个框中所述操作可被分到另一框中,被省略或被组合。 示例性操作环境
图5示出了可用于实现这里所述技术的通用计算机环境500。计算机环境500 仅是计算环境的一个示例,并不旨在暗示对计算机和网络体系结构的功能性使用范 围做出任何限定。计算机系统500也不应被解释为对在示例性计算机环境500中的 任一组件或其组合具有任何依赖或要求。
计算机环境500包括计算机502形式的通用计算设备。计算机502的组件包 括但不局限于, 一个或多个处理器或处理单元504、系统存储器506以及系统总线 508,该系统总线508可将包括处理器504在内的不同系统组件连接到系统存储器 506上。
系统总线508代表一个或多个任意类型的总线结构,这包括存储器总线或存储器控制器、外围总线、图形加速端口以及处理器或使用任意多种总线体系结构的 本地总线。举例说明,这样的体系结构可包括工业标准体系结构(ISA)总线、微
通道体系结构(MCA)总线、增强型ISA (EISA)总线、视频电子标准协会(VESA) 本地总线、外围组件互联(PCI)总线(也称作Mezzanine总线)、PCI快速总线、 通用串行总线(USB)、安全数字(SD)总线,或IEEE 1394 (即火线总线)。
计算机502可包括多种计算机可读介质。这样的介质可以是任何可由计算机 502存取的介质,包括易失性和非易失性介质、可移除和不可移除介质。
系统存储器506包括易失性存储器形式的计算机可读介质,诸如随机存取存 储器(RAM) 510;和/或非易失性存储器,诸如只读存储器(ROM) 512或闪速 RAM。基本输入/输出系统(BIOS) 514被存储在ROM512或闪速RAM中,该基 本输入/输出系统(BIOS) 514包含(如在启动阶段)帮助在计算机502内的元件 之间传递信息的基本例程。RAM 10通常包含处理单元504立即可存取和/或当前 正由处理单元504处理的数据和/或程序模块。
计算机502也可包括其它可移除/不可移除、易失性/非易失性计算机存储介质。 举例说明,图5列举了硬盘驱动器516,其用于对不可移除、非易失性磁性介质(未 示出)进行读写操作;还列举了磁盘驱动器518,其用于对可移除、非易失性磁盘 520 (如"软盘")进行读写操作;以及光盘驱动器522,其用于对可移除、非易 失性光盘524 (如CD-ROM、 DVD-ROM或其它光介质)进行读写操作。硬盘驱动 器516、磁盘驱动器518和光盘驱动器522每个都通过一个或多个数据介质接口 525 与系统总线508相连。另外,硬盘驱动器516、磁盘驱动器518和光盘驱动器522 也可通过一个或多个接口 (未示出)与系统总线508相连。
盘驱动器及其相关的计算机可读介质提供计算机可读指令、数据结构、程序 模块以及其它计算机502数据的非易失性存储。尽管该示例示出了硬盘516、可移 动磁盘520和可移动光盘524,但应当认识到其它类型可存储由计算机访问的数据 的计算机可读介质也可用来实现该示例性计算系统和环境,这些介质如盒式磁带或 其它磁性存储设备、闪速存储卡、CD-ROM、数字多功能盘(DVD)或其它光盘 存储器、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读 存储器(EEPROM)等等。
任何数量的程序模块可存储在硬盘516、磁盘520、光盘524、 ROM 512和/ 或RAM 510中,例如,操作系统526 (在某些实施例中包括上述低优先级I/O文 件系统和高优先级I/0文件系统以及索引系统)、 一个或多个应用程序528、其它
12程序模块530以及程序数据532。每个这样的操作系统526、 一个或多个应用程序 528、其它程序模块530以及程序数据532 (或其某种组合)可实现所有或部分支 持分布式文件系统的现有组件。
用户可通过诸如键盘534和点击设备536 (如"鼠标")这样的输入设备将命 令和信息输入到计算机502中。其它的输入设备538 (未专门示出)可包括传声器、 操纵杆、游戏垫、圆盘式卫星电视天线、串行口、扫描仪等等。这些和其它的输入 设备通过连接到系统总线508的输入/输出接口 540与处理单元504相连,然而该 输入设备也可通过诸如并行口、游戏口或通用串行总线端口 (USB)这样的其它接 口以及总线体系结构来连接。
监视器542或其它类型的显示设备也可通过诸如视频适配器544这样的接口 与系统总线508相连。除监视器542之外,其它的输出外围设备可包括诸如扬声器 (未示出)和打印机546这样的组件,这些组件可通过I/0接口 540与计算机502 相连。
计算机502可在有一台或多台远程计算机(如远程计算设备548)逻辑连接的 网络化环境中工作。例如,远程计算设备548可为PC、便携式计算机、服务器、 路由器、网络计算机、对等设备或其它普通网络节点,等等。举出的远程计算设备 548是便携式计算机,其可包括许多或所有这里相对计算机502说明的元件和特征。 另外,计算机502也可在非网络化环境中工作。
计算机502和远程计算机548之间的逻辑连接被描述为本地网(LAN) 550 和通用广域网(WAN) 552。这样的网络化环境常见于办公室、企业计算机网络、 内联网和因特网中。
当在LAN网络化环境中应用时,计算机502通过网络接口或适配器554连接 到局域网550。当在WAN网络化环境中应用时,计算机502通常包括调制解调器 556或其它用于在广域网552上确立通信的装置。调制解调器556可为计算机502 内置或外置,其可通过I/O接口 540或其它恰当的机制连接到系统总线508上。应 当认识到所述网络连接是示例性的,也可使用在计算机502和548之间确立至少一 个通信链接的其它装置。
在网络化环境中,比如结合计算环境500所示出的,相对计算机502或其部 分描绘的程序模块可存储在远程存储器存储设备中。例如,远程应用程序558驻留 在远程计算机548的存储设备中。为说明起见,应用程序或程序以及如操作系统这 样的其它可执行程序组件在这里以单独的块来阐明,但应到认识到这样的程序和组件多次以计算设备502的不同存储器组件形式存在,并由至少一台计算机数据处理 器来执行。
这里可用计算机可执行指令的通用上下文来说明不同的模块和技术,该计算 机可执行指令如由一台或多台计算机或其它设备执行的程序模块。通常而言,程序 模块包括例程、程序、对象、组件、数据结构等,其用于执行特定的任务或实现特 定的抽象数据类型。 一般说来,在各个实施例中,程序模块的功能性可按需要组合 ^》酉己。
这些模块和技术的实现形式可保存在某种形式的计算机可读介质上或通过这 样的介质传送。计算机可读介质可为任何可由计算机存取的介质。举例说明,但并 非限定,计算机可读介质可包含"计算机存储器介质"和"通信介质"。
"计算机存储器介质"包括易失性和非易失性、可移除和不可移除介质,这 样的介质能以任何信息存储的方法或技术来实现,如计算机可读指令、数据结构、 程序模块或其它数据。计算机存储器介质包括但不局限于,RAM、 ROM、 EEPROM、 闪速存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存 储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或者任何其它可用于存储 所需信息并可由计算机存取的介质。
"通信介质"通常包含计算机可读指令、数据结构、程序模块或者其它包含 在已调制数据信号中的数据(如载波或其它传送机制)。通信介质也包括任意的信 息传递介质。术语"已调制数据信号"是指这样一种信号,它已经将其特性设置或 改变为能对信号中的信息进行编码的方式。作为示例而非限制,通信介质包括诸如 有线网络或直线连接这样的有线介质,以及诸如超声波、RF、远红外和其它无线 介质这样的无线介质。任何以上组合也包括在计算机可读介质的范畴内。
本说明书通篇引述了 "一个实施例"、"一实施例"或"一范例实施例", 这意指特定的说明特征、结构或特性是涵盖在本发明至少一个实施例中的。于是, 这样短语的使用可引用到不止一个实施例中。进一步,在一个或多个实施例中,所 述特征、结构或特性能以任何合适的方式组合。
然而,本领域熟练的技术人员会认识到本发明也可不用一个或多个特定细节, 或者采用其它方法、资源、材料等来实现。仅仅为了避免模糊本发明的方面,这里 未示出和详述其它情况下我们熟知的结构、资源或操作。
虽然已经示出并描述了本发明的示例性实施例和应用形式,但是应当认识到 本发明不局限于上述的精确配置和资源。本领域普通技术人员也对这里所述本发明方法和系统的排列、操作和细节做出显而易见的各种修改、变更或变化而不背离本 发明所声明的范围。
权利要求
1. 一种用于将输入/输出(I/O)请求发送至归档系统的计算机实现方法,所述方法包括等待I/O请求;确定所述I/O请求是否由索引子系统生成,其中所述索引子系统要创建用于执行对一组文档的单词搜索的索引;以及作为对确定索引子系统生成所述I/O请求的响应,以低优先级发送所述I/O请求。
2. 如权利要求l所述的方法,其特征在于,还包括作为对确定所述I/0请求是由组件而非所述索引子系统生成的响应,选择性地以高优先级的所述i/o请求。
3. 如权利要求l所述的方法,其特征在于,响应于搜索请求而生成的I/O请 求由询问子系统生成,而且以高优先级发送。
4. 如权利要求l所述的方法,其特征在于,响应于读取要索引文档而生成的 I/O请求由所述索引子系统生成的。
5. 如权利要求l所述的方法,其特征在于,响应于将数据写入所述索引而生 成的I/O请求由所述索引子系统生成的。
6. 如权利要求l所述的方法,其特征在于,优先级可基于每线程而被分配给 各I/0请求。
7. 如权利要求l所述的方法,其特征在于,还包括将由所述索引子系统生成 的中央处理单元(CPU)任务分配作为低优先级CPU任务。
8. —种或多种其上具有指令的计算机可读介质,所述指令在被计算机执行时 可实现如权利要求1所述的方法。
9. 一种用于索引文档的计算机实现方法,所述方法包括使用一个或多个低优先级输入/输出(I/O)请求从文件系统中读取文档内容; 从所述内容中提取单词;以及使用一个或多个低优先级I/O请求将所述被提取的单词存储在索引中。
10. 如权利要求9所述的方法,其特征在于,还包括将所述内容转换成纯文本。
11. 如权利要求9所述的方法,其特征在于,使用提取是使用拆词进程来执 行的。
12. 如权利要求9所述的方法,其特征在于,所述低优先级I/0请求与一个或 多个低优先级中央处理单元(CPU)任务相关联。
13. 如权利要求9所述的方法,其特征在于,响应于由用户生成的询问而使 用一个或多个高优先级1/0请求来选择性地访问所述索引。
14. 如权利要求13所述的方法,其特征在于,所述一个或多个I/0请求以及 与所述询问相关联的所述一个或多个I/O请求由所述相同进程的不同线程生成。
15. —种或多种其上具有指令的计算机可读介质,所述指令在被计算机执行 时可实现如权利要求9所述的方法。
16. —种创建用于在一个或多个文档中搜索一个或多个所选单词的索引的系 统,所述系统包括文件系统,至少支持低和高优先级输入/输出(I/O)请求;数据存储,用于存储一个或多个要索引的文档以及所述索引,其中所述数据存储可经由所述文件系统访问;以及索引进程,从所述数据存储中读取一个或多个文档并将数据存储在所述索引中,其中所述索引进程生成一个或多个低优先级i/o请求,用于从所述数据存储中读取所述一个或多个文档并生成一个或多个低优先级I/O请求以将数据存储在所 述索引中。
17. 如权利要求16所述的系统,其特征在于,所述索引进程也响应于访问所述索引的搜索询问而将一个或多个高优先级i/o请求发送至所述文件系统。
18. 如权利要求16所述的系统,其特征在于,所述低优先级I/0请求与一个 或多个低优先级中央处理单元(CPU)任务相关联。
19. 如权利要求16所述的方法,其特征在于,所述一个或多个低优先级I/O 请求以及与所述询问相关联的所述一个或多个I/O请求由所述相同进程的不同线 程生成。
20. —种或多种其上具有指令的计算机可读介质,所述指令在被计算机执行 时可实现如权利要求16所述的系统。
全文摘要
用低优先级I/O请求来执行索引文档。这一方面可在一系统中实现,该系统具有对其归档系统的I/O请求支持至少两个优先级的操作系统。低优先级I/O请求可用于访问要索引的文档。低优先级I/O请求还可用于将信息写入索引。高优先级请求可用于响应来自用户的询问访问该索引的I/O请求。I/O请求可基于每个线程来设置,而与基于每个进程(可以为其希望分配不同优先权而产生两个或多个线程)来设置相对。
文档编号G06F17/30GK101443762SQ200580049984
公开日2009年5月27日 申请日期2005年8月1日 优先权日2005年6月27日
发明者S·色切斯特, Y·A·萨姆索诺夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1