(57)【要約】  低優先度入出力要求を用いて文書への索引の付与が実行される。本態様は、自身の文書管理システムへの入出力要求に関して少なくとも２つの優先度レベルをサポートするオペレーティングシステムを有するシステムで実装することができる。低優先度入出力要求を使用して、索引を付与すべき文書にアクセスすることができる。低優先度入出力要求を使用して、索引に情報を書き込むこともできる。高優先度要求を入出力要求にとして使用して、ユーザからのクエリに応じて索引にアクセスすることができる。入出力要求の優先度を（異なる優先度を割り当てることが望ましい複数のスレッドを生成する）プロセス毎ではなく、スレッド毎に設定することができる。
2008547106.tif 000002
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）要求をファイルシステムに送信するコンピュータ実行型の方法であって、前記方法は
入出力要求を求めて待機するステップと、
入出力要求が索引付けサブシステムにより生成されたか否かを決定するステップであって、前記索引付けサブシステムは文書集合の単語検索を実行するために用いる索引を生成するステップと、
索引付けサブシステムが前記入出力要求を生成したとの決定に応じて、前記入出力要求を低優先度で送信するステップと
を備えることを特徴とする方法。
【請求項２】
前記索引付けサブシステム以外の構成要素が前記入出力要求を生成したとの決定に応じて、前記入出力要求を高優先度で選択的に送信するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
検索要求に応じて生成した入出力要求はクエリサブシステムにより生成され、高優先度で送信されることを特徴とする請求項１に記載の方法。
【請求項４】
索引を付与すべき文書を読み込むことに応じて生成される入出力要求は、前記索引付けサブシステムにより生成されることを特徴とする請求項１に記載の方法。
【請求項５】
前記索引にデータを書込むことに応じて生成される入出力要求は、前記索引付けサブシステムにより生成されることを特徴とする請求項１に記載の方法。
【請求項６】
スレッド毎に優先度を入出力要求に割り当てることが可能であることを特徴とする請求項１に記載の方法。
【請求項７】
前記索引付けサブシステムにより生成された中央演算装置（ＣＰＵ）タスクを低優先度ＣＰＵタスクとして割り当てるステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータによる実行時に請求項１に記載の方法を実行する媒体上の命令を有することを特徴とする１つまたは複数のコンピュータ読取可能媒体。
【請求項９】
文書に索引を付与するためのコンピュータ実行型の方法であって、前記方法は１つまたは複数の低優先度入出力（Ｉ／Ｏ）要求を用いてファイルシステムから文書の内容を読み込むステップと
前記内容から単語を抽出するステップと、
前記の抽出した単語を、１つまたは複数の低優先度入出力要求を用いて索引に格納するステップと
を備えることを特徴とする方法。
【請求項１０】
前記内容をプレーンテキストに変換するステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記抽出は単語分解プロセスを用いて実行されることを特徴とする請求項９に記載の方法。
【請求項１２】
前記低優先度入出力要求は１つまたは複数の低優先度の中央演算装置（ＣＰＵ）タスクに関連することを特徴とする請求項９に記載の方法。
【請求項１３】
前記索引は、ユーザが生成したクエリに応じて１つまたは複数の高優先度入出力要求を用いて選択的にアクセスされることを特徴とする請求項９に記載の方法。
【請求項１４】
前記１つまたは複数の入出力要求と、前記クエリに関連する１つまたは複数の入出力要求とは、同一プロセスの異なるスレッドにより生成されることを特徴とする請求項１３に記載の方法。
【請求項１５】
コンピュータによる実行時に請求項９に記載の方法を実行する命令を媒体上に有することを特徴とする１つまたは複数のコンピュータ読取可能媒体。
【請求項１６】
１つまたは複数の文書を検索して１つまたは複数の選択語を求めることに用いる索引を生成するシステムであって、前記システムは、
少なくとも低優先度および高優先度入出力（Ｉ／Ｏ）要求をサポートするファイルシステムと、
索引を付与すべき１つまたは複数の文書と前記索引とを格納するデータストアであって、前記データストアは前記ファイルシステムを通してアクセス可能であることを特徴とするデータストアと、
１つまたは複数の文書を前記データストアから読み込み、前記索引にデータを格納する索引付けプロセスであって、前記索引付けプロセスは１つまたは複数の低優先度入出力要求を生成して前記１つまたは複数の文書を前記データストアから読み込み、前記索引にデータを格納するための１つまたは複数の低優先度入出力要求を生成することを特徴とする索引付けプロセスと
を備えることを特徴とするシステム。
【請求項１７】
前記索引付けプロセスはさらに、前記索引にアクセスする検索クエリに応じて１つまたは複数の高優先度入出力要求を前記ファイルシステムに送信することを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記低優先度入出力要求は、１つまたは複数の低優先度の中央演算装置（ＣＰＵ）タスクに関連することを特徴とする請求項１６に記載のシステム。
【請求項１９】
前記１つまたは複数の低優先度入出力要求と、前記クエリに関連する前記１つまたは複数の入出力要求とは、同一プロセスの異なるスレッドにより生成されることを特徴とする請求項１６に記載の方法。
【請求項２０】
コンピュータによる実行時に請求項１６に記載の方法を実行する命令を有することを特徴とする１つまたは複数のコンピュータ読取可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
（ラップトップ／ノートブックコンピュータおよびハンドヘルドコンピューティングデバイス、およびデスクトップコンピュータを含む）パーソナルコンピュータ用に設計された一部のオペレーティングシステムは、パーソナルコンピュータに記憶したテキスト文書において一つの選択語あるいは複数の選択語をユーザが検索可能な全文検索システムを有する。一部の全文検索システムには索引付け（インデクシング）サブシステムを含まれるものもある。索引付けサブシステムは基本的に、ユーザがキーワードを用いて索引付きの検索を実行できるように、パーソナルコンピュータに記憶した文書を検査して、文書のそれぞれの単語を索引（インデックス）に格納する。この索引付けプロセスは中央演算装置（ＣＰＵ）および入出力（Ｉ／Ｏ）に負荷が集中する。従って、索引付けプロセスの実行中にユーザが別の作業を実行したい場合、ユーザは一般にこの作業の処理が遅延することを経験するであろう。これは“ユーザ経験”に不利に影響する傾向がある。
【０００２】
【特許文献１】米国特許出願公開第２００４／００６８６２７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
索引付けプロセス中にユーザアクティビティに応答する際の遅延を最小化する１つのアプローチは、ユーザアクティビティの検出時に索引付けを一時停止することである。全文検索システムは索引付けプロセスを再開するためにユーザアクティビティを検出し、ユーザの作業の完了時点（または休止期間）を“予測”するロジックを含むことができる。ユーザアクティビティを検出すると、索引付けプロセスを一時停止することができるが、一般に（例えば、索引付けプロセスの一部として現在実行中のまたはタスクを完了するため）索引付けプロセスが一時停止状態に移行する際の遅延がなお存在する。さらに、休止期間の予測結果が不正確な場合、索引付けプロセスはユーザエクスペリエンスを悪化させうる前記の遅延を引き起こすであろう。さらに、ユーザアクティビティと休止期間との検出に用いるロジックは、全文検索システムをいっそう複雑にし、ＣＰＵリソースを消費する。従来システムの幾つかの欠点を考察したが、この背景情報は請求項に言及されなければならない問題を特定するようには意図されていない。
【課題を解決するための手段】
【０００４】
以下の要約の目的は、後の「発明を実施するための最良の形態」でさらに説明する概念から選んだものを簡潔な形で紹介することである。本要約は請求項の主要な特徴または本質的な特徴を特定するようには意図しておらず、請求範囲の決定を助長するものとして用いるようにも意図していない。
【０００５】
説明する様々な実施形態の態様によると、文書への索引の付与は低優先度の入出力要求を用いて実行される。本態様は、文書管理システムへの入出力要求に関して少なくとも２つの優先度レベルをサポートするオペレーティングシステムを有するシステムで実行することができる。一部の実装では、索引を付与すべき文書へのアクセスと索引への情報書き込みとに低優先度の入出力要求を使用し、一方でユーザからの問い合わせに応じて索引にアクセスするための入出力要求に高優先度の要求を使用する。また、一部の実装では、入出力要求の優先度を（異なる優先度を割り当てることが望ましい複数のスレッドを生成することができる）プロセス毎ではなく、スレッド毎に設定することができるものもある。
【０００６】
実施形態をコンピュータプロセス、（携帯ハンドヘルドコンピューティングデバイスを含む）コンピュータシステムとして、あるいはコンピュータプログラム製品のような製造品として実装してもよい。コンピュータプログラム製品は、コンピュータシステムが読取可能なコンピュータ記憶媒体で、コンピュータプロセスの実行命令のコンピュータプログラムを符号化してもよい。コンピュータプログラム製品はまた、コンピューティングシステムが読取可能な搬送波上の伝播信号で、コンピュータプロセスの実行命令のコンピュータプログラムを符号化してもよい。
【発明を実施するための最良の形態】
【０００７】
様々な実施形態を以下で添付図面を参照してより完全に説明する。添付図面は本明細書の一部を形成し、本発明を実施する具体的な実施形態の例を示す。しかしながら、実施形態は多数の異なる形態で実装してもよく、本明細書で説明する実施形態に限定されると解釈するべきではない。むしろこれらの実施形態は、本開示が徹底的且つ完全で、本発明の範囲を当業者に完全に伝えることを目的として提供されている。実施形態は方法、システムまたは装置として実施してもよい。従って、実施形態はハードウェアによる実装の形態、完全にソフトウェアによる実装の形態、またはソフトウェアとハードウェアの態様を組み合わせた実装の形態を取ることができる。以下の詳細説明は従って、限定的な意味で捉えるべきではない。
【０００８】
様々な実施形態の論理命令は、（ａ）コンピューティングシステム上で実装される一連のコンピュータ実装ステップとして、および／または（ｂ）コンピューティングシステム内部において相互接続された機械的なモジュール群として実装される。この実装は、実施形態を実装するコンピューティングシステムの性能要求に依存する選択をどう行うかが問題となる。従って、本明細書で説明する実施形態を構築する論理命令を代替的に命令、ステップまたはモジュールと称する。
【０００９】
図１は検索を目的とする文書索引付けに対する低優先度の入出力要求をサポートするシステム１００を示す。本実施形態の例では、システム１００はユーザプロセス１０２−１から１０２−Ｎ、（例えば、高優先度入出力要求キュー１０６および低優先度入出力要求キュー１０８を用いて）高優先度および低優先度の入出力要求をサポートするファイルシステム１０４、および検索を目的とした索引を付与すべき文書の格納に使用しうるデータベース１１０（例えば、ディスクドライブ）を含む。高優先度および低優先度の入出力要求をサポートする適切なファイルシステムはいかなるものも、ファイルシステム１０４を実装するために用いることができる。一実施形態においてファイルシステム１０４は、２００４年８月８日公表の“プロアクティブメモリ管理に関する方法およびメカニズム”という発明名称の特許文献１で説明されるように、高優先度および低優先度の入出力要求キュー１０６および１０８を実装する。
【００１０】
“低優先度”および“高優先度”という用語を上で使用したが、これらは、低優先度の入出力要求が高優先度の入出力要求より低い優先度を有するという意味で相対的な用語として使用する。一部の実施形態では、例えば“通常”および“低い”優先度のような別の用語を使用してもよい。他の実施形態では、入出力要求に対して利用可能な２つより多くの優先度レベルがあってもよい。このような実施形態では、索引付けに対する入出力要求を最低優先度で送信することができ、それにより他のプロセスおよび／またはスレッドからの入出力要求をより高い優先度レベルで送信することが可能となる。
【００１１】
本実施形態の例では、ユーザプロセス１０２−Ｎは検索の目的となる（例えば、文書の全文検索）文書に索引を付与する索引付けプロセスである。例えば、索引付けプロセス１０２−Ｎは文書の全単語を索引に書き込むことができ（これをシステム１００に格納した文書全てに繰り返す）、この索引を使用してシステム１００内に格納した文書の全文検索を実行することができる。
【００１２】
他のユーザプロセス（例えば、ユーザプロセス１０２−１および１０２−２）は、データベース１１０に格納したファイルにアクセスする目的でファイルシステム１０４と相互作用しうる任意の他のプロセスであることができる。ユーザの作業に応じて、多数のユーザプロセスが実行されていること、少数のユーザプロセスが実行されていること、または一部のシナリオでは索引付けプロセス１０２−Ｎのみが実行されていること（このプロセスはデータストア１１０内の文書全てに索引を付与をし終えれば停止してもよい）、としてもよい。
【００１３】
動作中は、ユーザプロセス１０２−１から１０２−Ｎは一般に入出力要求をその時々にファイルシステム１０４に送信し、これを矢印１１２−１から１１２−Ｎで示す。多数のユーザプロセスに対し、これらの入出力要求が高優先度で送信される。例えば、ユーザ入力に応答するアプリケーション（例えば、ワードプロセッサ）、メディアを再生するメディアプレイヤー、ページをダウンロードするブラウザ、等のようなフォアグラウンドプロセスは一般に入出力要求を高優先度で送信するであろう。
【００１４】
しかしながら、本実施形態によると、索引付けプロセス１０２−Ｎにより送信される全ての入出力要求は低優先度で送信され、矢印１１４で示すように低優先度入出力要求キュー１０８に追加される。このように、索引付けプロセス１０２−Ｎからの入出力要求は、高優先度入出力要求キュー１０６内の全ての高優先度入出力要求が情報を伝達した後に実行されるであろう。この特徴により、一部の実施形態では索引付けプロセスにより引き起こされるユーザエクスペリエンスの悪化を有利に削減できる。さらに一部の実施形態では、前述の休止検出ロジックは省略されており、それにより索引付けサブシステムの複雑さが削減される。またさらに、索引付けプロセスに対して低優先度入出力要求を用いることで、休止検出機構で一般に存在する休止期間検出におけるエラーと、索引付けプロセスの一時停止における遅延との問題を回避できる。
【００１５】
図２は一実施形態による検索／索引付けシステム２００の例を示す。本実施形態では、システム２００は全文検索／索引付けプロセス（即ちメインプロセス）２０２、全文索引付けサンドボックスプロセス（即ちサンドボックスプロセス）２０４、文書データストア２０６、および全文カタログデータ（即ち索引）データストア２０８を含む。本実施形態では、メインプロセス２０２は高優先度入出力クエリサブシステム（即ちクエリサブシステム）２１０および低優先度入出力索引付けサブシステム２１２を含む。サンドボックスプロセス２０４は、異なる形式の文書をプレーンテキストに変換するコンポーネントを分離するために使用し、低優先度入出力索引付け／フィルタリングサブシステム（即ちフィルタリングサブシステム）２１４を含む。
【００１６】
本実施形態では、クエリサブシステム２１０はインタフェース２１６を通してユーザから受信した検索クエリを処理する。ユーザは、システム２００内に格納した文書内で検索すべき１つまたは複数のキーワードを入力することができる。一部の実施形態では、インタフェース２１６を通して受信したクエリに応答して、クエリサブシステム２１０はクエリを処理し、高優先度の入出力要求を通して索引データストア２０８にアクセスする。例えば、クエリサブシステム２１０はキーワード（複数）の索引を検索して、キーワード（複数）を含む一つまたは複数の文書のリストをこの索引から取得することができる。プロセスおよび／またはスレッドに対してＣＰＵ優先度を選択可能な実施形態では、クエリサブシステム２１０を高優先度のＣＰＵ処理に対して設定することができる。このような構成（即ち、入出力およびＣＰＵの優先度を高優先度に設定すること）は有利でありうる。なぜならば、ユーザは一般に検索結果を可能な限り迅速に要求し、且つシステムリソースを検索専用とする意図があるからである。
【００１７】
本実施形態では、低優先度入出力索引付けサブシステム２１２は文書の全文検索に用いた索引を構築する。例えば、低優先度入出力索引付けサブシステム２１２はデータ（例えば、単語、および単語を含む文書の文書識別子）をサンドボックスプロセス２０４から取得し、適切にこのデータを索引データストア２０８に格納することができる。データの索引データストア２０８への書き込みは相対的に入出力に負担が集中しがちである。索引の構築（例えば、索引データストア２０８に格納すべきデータの決定、および索引データストア２０８へのデータの格納方法の決定）は相対的にＣＰＵに負担が集中しがちである。本実施形態によると、低優先度入出力索引付けサブシステム２１２は低優先度の入出力要求を用いてデータを索引データストア２０８に格納する。プロセスおよび／またはスレッドに対してＣＰＵ優先度を選択可能な実施形態では、低優先度入出力索引付けサブシステム２１２を低優先度のＣＰＵ処理に対して設定することができる。このような構成（即ち、入出力およびＣＰＵの優先度を低優先度に設定すること）は有利でありうる。なぜならば、ユーザは一般にユーザアクティビティ（例えば、アプリケーションの実行、メディアの再生、ファイルのダウンロード、等に対するユーザ入力）に対して高速な応答を要求し、且つ索引付けプロセスを遅らせる意図があるからである。
【００１８】
本実施形態では、フィルタリングサブシステム２１４は文書データストア２０６から文書を抽出し、その文書を処理して低優先度入出力索引付けサブシステム２１２が索引を構築するために必要なデータを抽出する。フィルタリングサブシステム２１４は、文書データストア２０６から得た各文書の内容とメタデータとを読み込み、その文書から、ユーザがクエリサブシステム２１０を用いて文書内で検索可能な単語を抽出する。一実施形態では、フィルタリングサブシステム２１４はフィルタコンポーネントを含む。フィルタコンポーネントは、文書をプレーンテキストに変換すること、単語分解プロセスを実行すること、および低優先度入出力索引付けサブシステム２１２が索引を構築するために利用できるよう、その単語をパイプ処理に置くことが可能である。他の実施形態では、単語分解は低優先度入出力索引付けサブシステム２１２が行う。
【００１９】
システム２００を特定のモジュールまたはコンポーネントで説明したが、他の実施形態では、コンポーネントまたはモジュールに対して説明した１つまたは複数の機能を別のコンポーネントまたはモジュールに分割すること、より少数のモジュールまたはコンポーネントに結合すること、または省略することとしてもよい。
【００２０】
“入出力要求”動作フローの例
図３は、一実施形態に従ってファイルシステムへ入出力要求を送信する際の索引付けプロセスの動作フローを示す。動作フロー３００は任意の適切なコンピューティング環境で実行してよい。例えば、動作フロー３００をシステム２００のメインプロセス２０２（図２）のような索引付けプロセスにより実行して、システムのデータストア上に格納した一つまたは複数の文書を処理し、格納した一つまたは複数の文書の全文検索の実行に用いる索引を生成してもよい。従って、動作フロー３００の説明は図２の少なくとも１つの構成要素に言及する場合がある。しかしながら、図２の構成要素に対するそのような参照はいかなるものも説明の目的のみによるものであって、図２の実装は動作フロー３００に対しては非制限的な環境となることは理解されるべきである。
【００２１】
ブロック３０２で、索引付けプロセスは入出力要求を求めて待機する。一実施形態では、低優先度の入出力要求を索引付けサブシステムが生成し、高優先度の入出力要求を検索クエリサブシステムが生成することが可能なメインプロセス２０２（図２）として索引付けプロセスを実装する。例えば、フィルタリングサブシステム２１４のようなフィルタリングサブシステムとともに、低優先度入出力サブシステム２１２のような索引付けサブシステムで索引付けサブシステムを実装してもよい。検索クエリサブシステムを、例えばクエリサブシステム２１０のような任意の適切なクエリ処理コンポーネントを用いて実装することが可能である。動作フロー３００はブロック３０４に進むことができる。
【００２２】
ブロック３０４で、入出力要求が索引付けサブシステムからであるか否かを決定する。一実施形態では、索引付けプロセスは入出力要求が索引付けサブシステムからであるか否かを、要求発信元を調べることで決定する。ブロック３０２に関して上述した例を続けると、例えば入出力要求が索引付けサブシステムからの索引への情報書き込み要求である場合、または入出力要求がフィルタリングサブシステムからの文書データストア内に格納した文書に対するアクセス要求である場合、索引付けシステムは入出力要求が索引付けサブシステムからであると決定し、動作フロー３００はさらに以下で説明するブロック３０８に進むことができる。しかしながら、例えば入出力要求がクエリサブシステムからの特定の一つまたは複数の単語に対する索引の検索要求である場合、索引付けシステムは入出力要求が索引付けサブシステムからではないと決定し、動作フロー３００はブロック３０６に進むことができる。一実施形態では、文書管理システムの入出力要求の優先度をプロセス毎ではなくスレッド毎に設定可能とするようにオペレーティングシステムを実装する。このような特徴は、クエリサブシステムおよび索引付けサブシステムが同一プロセス（例えば、図２のメインプロセス２０２）の一部であり、ユーザが開始したクエリ入出力要求を高優先度で送信し、索引付けサブシステムが開始した入出力要求を低優先度で送信できるような実施形態において有利に使用することができる。
【００２３】
ブロック３０６で、入出力要求を高優先度でファイルシステムに送信する。一実施形態では、索引付けシステムは入出力要求を高優先度入出力要求キュー１０６（図１）のような高優先度キューに送信する。動作フロー３００はその後ブロック３０２に戻って別の入出力要求を求めて待機することができる。
【００２４】
ブロック３０８で、入出力要求を低優先度でファイルシステムに送信する。一実施形態では、索引付けシステムは入出力要求を低優先度入出力キュー１０８（図１）のような低優先度キューに送信する。動作フロー３００はその後ブロック３０２に戻って別の入出力要求を求めて待機することができる。
【００２５】
動作フロー３００を特定の順序で逐次的に図示および説明したが、他の実施形態では、ブロックで示した動作を別の順序、複数回、および／または並列に実行してもよい。さらに、一部の実施形態では、ブロックで示した１つまたは複数の動作を別のブロックに分割すること、省略することまたは組み合わせることが可能である。
【００２６】
“文書索引付け”動作フローの例
図４は一実施形態に従って文書に索引を付与する動作フロー４００を示す。動作フロー４００は任意の適切なコンピューティング環境で実行してもよい。例えば、動作フロー３００をシステム２００のメインプロセス２０２（図２）のような索引付けプロセスで実行して、システムのデータストア上に格納した一つまたは複数の文書を処理し、格納した一つまたは複数の文書の全文検索の実行に用いる索引を生成することができる。従って、動作フロー４００の説明は図２の少なくとも１つの構成要素を言及する可能性がある。しかしながら、図２の構成要素に対するそのような参照はいかなるものも説明の目的のみによるものであって、図２の実装は動作フロー４００に対する非制限的な環境となることは理解されるべきである。
【００２７】
ブロック４０２で、文書をファイルシステムから取得する。一実施形態では、システム２００（図２）のような索引付けシステムはデータストア２０６（図２）のような文書ストアから文書を読み込む。本実施形態によると、文書は低優先度の入出力要求を用いてデータストアから読み込む。例えば、索引付けシステムは、文書を文書データストアから読み込むための入出力要求を生成可能なフィルタリングサブシステム２１４のようなフィルタリングサブシステムを含んでもよい。このような索引付けシステムを構成して、（クエリサブシステムではなく）フィルタリングサブシステムから入出力要求を検出検出してそれらの要求を低優先度入出力要求として文書管理システムに送信することができる。動作フロー４００はブロック４０４に進むことができる。
【００２８】
ブロック４０４で、ブロック４０２で得た文書をプレーンテキスト文書に変換する。一実施形態では、文書をメモリに読み込んだ後、前述のフィルタリングサブシステムが文書をプレーンテキスト文書に変換する。例えば、テキストデータに加え、文書はフォーマッティングメタデータ、（文書がマークアップ言語の文書である場合）マークアップ、等を含んでもよい。動作フロー４００はブロック４０６に進むことができる。
【００２９】
ブロック４０６で、ブロック４０４で得たプレーンテキスト文書を処理して、プレーンテキスト文書を個々の単語に分離する（即ち、単語分解プロセスを実行する）。一実施形態では、低優先度入出力サブシステム２１２（図２）のような索引付けサブシステムが単語分解プロセスを実行することができる。さらに本実施形態によると、分離した単語を次いで低優先度入出力要求を用いて索引に記憶する。ブロック４０２に関して説明した例を続けると、（索引付けサブシステムを含む）前述の索引付けシステムを構成して索引付けサブシステムからの入出力要求を検出する。このような実施形態では、索引付けシステムは、索引付けサブシステムからのものとして検出した入出力要求を低優先度入出力要求として文書管理システムに送信する。動作フロー４００はブロック４０８に進むことができる。
【００３０】
ブロック４０８で、索引を付与すべき文書がまだあるか否かを決定する。一実施形態において索引付けシステムは、まだ索引が付与されていない文書に対して前述の文書データストアを調べ、索引を付与すべき文書がまだあるか否かを決定する。例えば、前述のフィルタリングサブシステムは低優先度入出力要求を用いて文書データストアを調べることができる。索引を付与すべき他の文書が１つまたは複数あると決定する場合、動作フロー４００はブロック４１０に進むことができる。
【００３１】
ブロック４１０で、索引を付与すべき次の文書を選択する。一実施形態において前述のフィルタリングサブシステムは、索引を付与すべき次の文書を文書データストアから選択する。動作フロー４００はブロック４０２に戻って文書に索引を付与することができる。
【００３２】
しかしながら、ブロック４０８で索引を付与すべき文書がもう存在しないと決定された場合、動作フロー４００はブロック４１２に進むことができ、そこで索引付けプロセスが完了する。
【００３３】
動作フロー４００を特定順序で逐次的に図示および説明したが、他の実施形態では、ブロックで示した動作を別の順序、複数回、および／または並列に実行してもよい。さらに、一部の実施形態では、ブロックで示した１つまたは複数の動作を別のブロックに分割すること、省略することまたは結合することが可能である。
【００３４】
例示的動作環境
図５は一般的なコンピュータ環境５００を示す。一般的なコンピュータ環境５００を使用して本明細書で説明する技術を実装することができる。コンピュータ環境５００はコンピューティング環境の一例に過ぎず、コンピュータおよびネットワークアーキテクチャの使用範囲または機能範囲に関する限定を示唆するようには意図していない。さらに、コンピュータ環境５００は、例示的コンピュータ環境５００に示した構成要素の任意の１つまたは複数の組合せに対して依存性または要求事項を有するとして解釈すべきでない。
【００３５】
コンピュータ環境５００は汎用目的のコンピュータ用デバイスをコンピュータ５０２の形で含む。コンピュータ５０２の構成要素は１つまたは複数のプロセッサまたは演算装置５０４、システムメモリ５０６、およびプロセッサ５０４を含む様々なシステムコンポーネントをシステムメモリ５０６に接続するシステムバス５０８を含むことができるが、これらに限らない。
【００３６】
システムバス５０８は任意の何種類かのバス構造のうち１つまたは複数を表し、それらにはメモリバスまたはメモリコントローラ、周辺バス、高速グラフィックポート、および様々なバスアーキテクチャのうちいずれかを用いるプロセッサまたはローカルバスが含まれる。例として、このようなアーキテクチャは業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクス標準協会（ＶＥＳＡ）ローカルバス、メザニンバスとしても知られる周辺機器相互接続（ＰＣＩ）バス、ＰＣＩエクスプレスバス、ユニバーサルシリアルバス（ＵＳＢ）、セキュアデジタル（ＳＤ）バス、またはＩＥＥＥ  １３９４、即ちファイヤーワイヤーバスを含むことができる。
【００３７】
コンピュータ５０２は様々なコンピュータ読取可能媒体を含むことができる。このような媒体は、コンピュータ５０２がアクセス可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可媒体の両方を含む。
【００３８】
システムメモリ５０６には、ランダムアクセスメモリ（ＲＡＭ）５１０のような揮発性メモリ、および／あるいは読取専用メモリ（ＲＯＭ）５１２またはフラッシュＲＡＭのような不揮発性メモリの形式でコンピュータ読取可能媒体が含まれる。基本入出力システム（ＢＩＯＳ）５１４は、起動時にコンピュータ５０２内の要素間での情報転送を支援する基本ルーチンを含み、ＲＯＭ５１２またはフラッシュＲＡＭに格納される。ＲＡＭ５１０は一般に、データ、ならびに／あるいは演算装置５０４が直接アクセス可能な、および／または演算装置５０４上で現在動作しているプログラムモジュールを含む。
【００３９】
コンピュータ５０２は他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ記憶媒体を含んでもよい。例として、図５は取り外し不可、不揮発性の磁気媒体（図示せず）を読み書きするハードディスクドライブ５１６、取り外し可能、不揮発性の磁気ディスク５２０（例えば、“フロッピー（登録商標）ディスク”）を読み書きする磁気ディスクドライブ５１８、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体のような取り外し可能、不揮発性の光ディスク５２４を読み書きする光ディスクドライブ５２２を示す。ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２は各々１つまたは複数のデータ媒体インタフェース５２５によりシステムバス５０８に接続する。あるいは、ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２を１つまたは複数のインタフェース（図示せず）によりシステムバス５０８に接続することができる。
【００４０】
ディスクドライブおよびそれらに関連するコンピュータ読取可能媒体は、コンピュータ５０２に対するコンピュータが読み込み可能な命令、データ構造、プログラムモジュール、および他のデータの不揮発性の保存手段を提供する。例ではハードディスク５１６、取り外し可能磁気ディスク５２０、および取り外し可能光ディスク５２４を示すが、磁気カセットまたは他の磁気記憶デバイス、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学記憶、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的に消去可能で再書き込み可能な読み出し専用素子（ＥＥＰＲＯＭ）、等のような、コンピュータが利用可能なデータを保存できる他種のコンピュータが読取可能な媒体を利用して、このコンピューティングシステムおよび環境の例を構築することもできる。
【００４１】
任意の数のプログラムモジュールをハードディスク５１６、磁気ディスク５２０、光ディスク５２４、ＲＯＭ５１２、および／またはＲＡＭ５１０上に格納することができる。そのプログラムモジュールには例として、オペレーティングシステム５２６（一部の実施形態では上述の低優先度および高優先度の入出力ファイルシステムおよび索引付けシステムを含む）、１つまたは複数のアプリケーションプログラム５２８、他のプログラムモジュール５３０、およびプログラムデータ５３２が含まれる。このようなオペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、他のプログラムモジュール５３０、およびプログラムデータ５３２の各々（またはそれらの何らかの組合せ）は、分散ファイルシステムをサポートする常住コンポーネントの全部または一部を実装してもよい。
【００４２】
ユーザはキーボード５３４、およびポインティングデバイス５３６（例えば、“マウス”）のような入力装置を通してコンピュータ５０２に命令または情報を入力することができる。他の入力装置５３８（詳細には示さず）は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、シリアルポート、スキャナ、および／または同等なものを含んでもよい。これらおよび他の入力装置を、システムバス５０８に接続した入出力インタフェース５４０を通して演算装置５０４に接続するが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースおよびバス構造で接続してもよい。
【００４３】
モニタ５４２または他種の表示装置もビデオアダプタ５４４のようなインタフェースを通してシステムバス５０８に接続する。モニタ５４２に加えて、他の出力周辺装置はスピーカ（図示せず）およびプリンタ５４６のような、入出力インタフェース５４０を通してコンピュータ５０２に接続可能なコンポーネントを含むことができる。
【００４４】
コンピュータ５０２は、リモートコンピューティングデバイス５４８のような１つまたは複数のリモートコンピュータに対する論理接続を用いてネットワーク環境で動作することができる。例として、リモートコンピューティングデバイス５４８はＰＣ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の共通ネットワークノード、等とすることができる。リモートコンピューティングデバイス５４８を、コンピュータ５０２に比べ本明細書で説明した要素および特徴の複数または全てを含むことが可能なポータブルコンピュータとして示す。あるいは、コンピュータ５０２は非ネットワーク化環境で同様に動作することができる。
【００４５】
コンピュータ５０２とリモートコンピュータ５４８との間の論理接続をローカルエリアネットワーク（ＬＡＮ）５５０および一般的な広域ネットワーク（ＷＡＮ）５２２として示す。このようなネットワーク環境は職場、企業規模コンピュータネットワーク、イントラネットおよびインターネットにおいては一般的である。
【００４６】
ＬＡＮネットワーク環境で実装される際、コンピュータ５０２はネットワークインタフェースまたはアダプタ５５４を通してローカルエリアネットワーク５５０に接続される。ＷＡＮネットワーク環境で実装される際、コンピュータ５０２は一般にモデム５５６または、広域ネットワーク５５２上で通信を確立する他の手段を含む。モデム５５６はコンピュータ５０２に対して内部または外部にあることができ、入出力インタフェース５４０または他の適切なメカニズムを通してシステム５０８に接続することができる。図示したネットワーク接続は例でしかなく、コンピュータ５０２と５４８との間の少なくとも１つの通信リンクを確立する他の手段を使用できることは理解されるであろう。
【００４７】
コンピューティング環境５００で示したようなネットワーク環境では、コンピュータ５０２に対して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納してもよい。例として、リモートアプリケーションプログラム５５８はリモートコンピュータ５４８のメモリ装置上にある。説明の目的で、オペレーティングシステムのようなアプリケーションまたはプログラムおよび他の実行可能プログラムコンポーネントを離散ブロックとして本明細書では示すが、このようなプログラムおよびコンポーネントは様々な時点でコンピューティングデバイス５０２の様々な記憶コンポーネント内にあり、コンピュータの少なくとも１つのデータプロセッサにより実行されることは理解される。
【００４８】
様々なモジュールおよび技術を、１つまたは複数のコンピュータまたは他の装置により実行されるプログラムモジュールのようなコンピュータ実行可能命令という、本明細書のような一般的な文脈で説明してもよい。一般に、プログラムモジュールは、特定タスクを実行または特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。一般に、プログラムモジュールの機能を様々な実施形態で望ましいように組み合わせるか、または分散させてもよい。
【００４９】
これらモジュールおよび技術の実装を、コンピュータ読取可能媒体の何らかの形態上に格納するか、または何らかの形態を通して送信してもよい。コンピュータ読取可能媒体は、コンピュータがアクセス可能となる媒体であればどのような形態でも可能である。例として、これには限らないが、コンピュータ読取可能媒体は“コンピュータ記憶媒体”と“通信媒体”とを備えてもよい。
【００５０】
“コンピュータ記憶媒体”は、コンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータのような情報を記憶する任意の方法または技術で実装した、揮発性および不揮発性、取り外し可能および取り外し不可媒体のすべてを含む。コンピュータ記憶媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学ストレージ、カセットテープ、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報の記憶に使用でき且つコンピュータがアクセス可能な任意の他の媒体を含むがこれらに限らない。
【００５１】
“通信媒体”は一般にコンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータを搬送波または他の伝送メカニズムのような変調されたデータ信号で具現化する。通信媒体は任意の情報配信媒体も含む。 “変調されたデータ信号”という用語は、１つまたは複数の特性集合を有するかまたは信号内の情報を符号化するように変調した信号を意味する。非限定的な例としてのみだが、通信媒体は有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、無線周波数、赤外線、および他の無線媒体のような無線媒体を含む。上記の任意の組合せもコンピュータ読取可能媒体の範囲に含まれる。
【００５２】
本明細書にわたって“一実施形態”、“実施形態”、または“実施形態の例”と言及してきたが、特に説明した特徴、構造、または特性が本発明の少なくとも１つの実施形態に含まれることを一貫として意味してきた。従って、このような言い回しを使用することで、１つより多くの実施形態を言及することができるかもしれない。さらに、説明した特徴、構造、または特性を１つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。
【００５３】
しかしながら関連する当業者は、本発明を１つまたは複数の特定の詳細なしに、または他の方法、リソース、材料、等とともに実行できることを認識することができる。他の事例では、公知の構造、リソース、または動作は、単に本発明の態様を不明瞭にすることを回避するために詳細には図示または説明しなかった。
【００５４】
本発明の実施形態の例および適用例を図示および説明したが、本発明は上述の具体的な構成およびリソースに限定されないことは理解されるべきである。当業者に明らかな様々な修正、変更、および変形を、本発明の請求範囲から逸脱することなく、本明細書で開示した本発明の方法およびシステムの配置、動作、および詳細に加えてもよい。
【図面の簡単な説明】
【００５５】
非制限的且つ非網羅的な実施形態を以下の図面を参照して説明する。図面において、同じ参照番号は特に指定しない限り様々な図面にわたり同じ部分を指す。
【図１】一実施形態に従って、高優先度および低優先度の入出力要求をサポートする検索／索引付けプロセスおよびファイルシステムを有するシステムの例を示す図である。
【図２】一実施形態に従う検索／索引付けシステムの例を示す図である。
【図３】一実施形態に従ってファイルシステムへ入出力要求を送信する際の索引付けプロセスの動作フローを示すフロー図である。
【図４】一実施形態に従って文書を索引付けする際の動作フローを示すフロー図である。
【図５】一実施形態に従う図１から４のシステムおよび動作フローの実装に適したコンピューティング環境の例を示すブロック図である。
【図１】
2008547106.tif 000003
【図２】
2008547106.tif 000004
【図３】
2008547106.tif 000005
【図４】
2008547106.tif 000006
【図５】
2008547106.tif 000007
【手続補正書】
【提出日】平成20年8月1日(2008.8.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）要求をファイルシステムに送信するコンピュータ実行型の方法であって、前記方法は
入出力要求を求めて待機するステップと、
前記入出力要求が文書集合の単語検索を実行するために用いる索引を生成するプロセスの一部として索引付けサブシステムにより生成されたか、または前記索引付けサブシステムにより生成された索引を検索するクエリサブシステムにより生成されたかを決定するステップと、
中央演算処理装置（ＣＰＵ）処理リソースがより低いＣＰＵ処理優先度の要求に割り当てられる前に、より高いＣＰＵ処理リソースを用いる要求に最初に割り当てられるように、索引付けサブシステムが索引付けされた検索を可能にするファイルの索引を生成するプロセスの部分である前記入出力要求を生成したとの決定に応じて、前記入出力要求を低いＣＰＵ処理優先度で送信するステップと
を備えることを特徴とする方法。
【請求項２】
前記索引付けサブシステム以外の構成要素が前記入出力要求を生成したとの決定に応じて、前記入出力要求を高いＣＰＵ処理優先度で選択的に送信するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
検索要求に応じて生成した入出力要求はクエリサブシステムにより生成され、高優先度で送信されることを特徴とする請求項１に記載の方法。
【請求項４】
索引を付与すべき文書を読み込むことに応じて生成される入出力要求は、前記索引付けサブシステムにより生成されることを特徴とする請求項１に記載の方法。
【請求項５】
前記索引にデータを書込むことに応じて生成される入出力要求は、前記索引付けサブシステムにより生成されることを特徴とする請求項１に記載の方法。
【請求項６】
スレッド毎に優先度を入出力要求に割り当てることが可能であることを特徴とする請求項１に記載の方法。
【請求項７】
前記索引付けサブシステムにより生成された中央演算装置（ＣＰＵ）タスクを低優先度ＣＰＵタスクとして割り当てるステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータによる実行時に請求項１に記載の方法を実行する命令を媒体上に有することを特徴とする１つまたは複数のコンピュータ読取可能記録媒体。
【請求項９】
文書に索引を付与するためのコンピュータ実行型の方法であって、
入出力（Ｉ／Ｏ）要求を受信するステップと、
前記入出力要求が文書集合の単語検索を実行するために用いる索引を生成するプロセスの一部として索引付けサブシステムにより生成されたか、または前記索引付けサブシステムにより生成された索引を検索するクエリサブシステムにより生成されたかを決定するステップと、
前記入出力要求が前記文書の単語検索を実行するために用いる索引を生成するプロセスの部分として索引付けサブシステムにより生成された場合、
中央演算処理装置（ＣＰＵ）処理リソースがより低いＣＰＵ処理優先度の要求に割り当てられる前に、より高いＣＰＵ処理リソースを用いる要求に最初に割り当てられるように、１つまたは複数の低いＣＰＵ処理優先度の入出力要求を用いてファイルシステムから前記文書の内容を読み込むステップと
前記内容から単語を抽出するステップと、
前記の抽出した単語を、１つまたは複数の低優先度の入出力要求を用いて索引に格納するステップと
を備えることを特徴とする方法。
【請求項１０】
前記内容をプレーンテキストに変換するステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記抽出は単語分解プロセスを用いて実行されることを特徴とする請求項９に記載の方法。
【請求項１２】
前記低優先度入出力要求は１つまたは複数の低優先度の中央演算装置（ＣＰＵ）タスクに関連することを特徴とする請求項９に記載の方法。
【請求項１３】
前記索引は、ユーザが生成したクエリに応じて１つまたは複数の高優先度入出力要求を用いて選択的にアクセスされることを特徴とする請求項９に記載の方法。
【請求項１４】
１つまたは複数の低いＣＰＵ処理優先度の入出力要求と、前記クエリに関連する１つまたは複数の入出力要求とは、同一プロセスの異なるスレッドにより生成されることを特徴とする請求項１３に記載の方法。
【請求項１５】
コンピュータによる実行時に請求項９に記載の方法を実行する命令を媒体上に有することを特徴とする１つまたは複数のコンピュータ読取可能記録媒体。
【請求項１６】
１つまたは複数の選択語に関する１つまたは複数の文書の検索に用いる索引を生成するシステムであって、前記システムは、
プロセッサおよびコンピュータ読取可能記録媒体と、
少なくとも低い高い中央処理装置（ＣＰＵ）処理優先度および高いＣＰＵ処理優先度の入出力（Ｉ／Ｏ）要求をサポートする前記コンピュータ読取可能記録媒体に格納されたファイルシステムと、
索引を付与すべき１つまたは複数の文書と前記索引とを格納する、前記プロセッサに結合されたデータストアであって、前記ファイルシステムを通してアクセス可能であるデータストアと、
前記プロセッサ上で実行される索引付けプロセスであって、
入出力（Ｉ／Ｏ）要求を受信し、
前記入出力要求が文書集合の単語検索を実行するために用いる索引を生成するプロセスの部分として索引付けサブシステムにより生成されたか、または前記索引付けサブシステムにより生成された索引を検索するクエリサブシステムにより生成されたかを決定し、
前記入出力要求が索引付けサブシステムによりにより生成されたかまたはクエリサブシステムにより生成されたかの決定に応じて、前記索引付けサブシステムにより生成された要求により低いＣＰＵ処理優先度を割り当てる索引付けプロセスと、
ＣＰＵ処理リソースがより低いＣＰＵ処理優先度の要求に割り当てられる前に、高いＣＰＵ処理リソースを用いる要求に最初に割り当てられるように、前記索引を生成するプロセスの一部として、前記データベースから１つまたは複数の文書を読み出し、前記索引にデータを格納する索引付けサブシステムであって、前記索引付けプロセスは前記データストアから前記１つまたは複数の文書を読み出すための１つまたは複数の低優先度の入出力要求を生成し、前記索引にデータを格納するための１つまたは複数の低優先度の入出力要求を生成する索引付けサブシステムと
を備えることを特徴とするシステム。
【請求項１７】
前記索引付けプロセスはさらに、前記索引にアクセスする検索クエリに応じて１つまたは複数の高優先度入出力要求を前記ファイルシステムに送信することを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記低優先度入出力要求は、１つまたは複数の低優先度の中央演算装置（ＣＰＵ）タスクに関連することを特徴とする請求項１６に記載のシステム。
【請求項１９】
前記１つまたは複数の低優先度入出力要求と、前記クエリに関連する前記１つまたは複数の入出力要求とは、同一プロセスの異なるスレッドにより生成されることを特徴とする請求項１６に記載のシステム。
【請求項２０】
コンピュータによる実行時に請求項１６に記載の方法を実行する命令を媒体上に有することを特徴とする１つまたは複数のコンピュータ読取可能記録媒体。