(57)【要約】【課題】索引キーと文書の対応付けではなく索引キーと検索範囲を対応づけることで、無駄な検索を防ぎ、検索時間の短縮を図る。 【解決手段】１組の索引キーは、索引検索システムに含まれており、検索の対象である文書の内容ではなく、検索の範囲に関連付けられている。これらの範囲関連の索引キー、または範囲キーによって、検索の範囲を選択することができ、検索が結果を得るためにふるいにかける必要がある文書の数が低減する。さらに、こうした複合検索範囲に基づいて検索の再ハッシュを無くすために複合検索範囲の索引が提供されるように、複合範囲が認識され、格納される。【選択図】図２
2014222538.tif 000002
【特許請求の範囲】
【請求項１】
クエリに基づいて、ネットワーク内に格納される複数の文書の検索を行うためのコンピュータにより実行される方法であって、
コンピュータが、前記文書に関連するプロパティを識別するステップと、
コンピュータが、前記識別されたプロパティに従って範囲関連索引キーを生成するステップと、
コンピュータが、前記文書の内容に従って内容関連検索キーを生成するステップと、
コンピュータが、索引を生成するステップであって、前記索引は、前記内容関連索引キーに対応する第１のパーティション、および前記範囲関連索引キーに対応する第２のパーティションを含む、ステップと、
を含むことを特徴とする方法。
【請求項２】
前記索引は、別の検索範囲が前記範囲関連索引キーの組合せによって定義されるように、前記組合せに従って構成された追加の文書レコードを含む第３のパーティションをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記範囲関連索引キーの組合せは、ブールの組合せに対応することを特徴とする請求項２記載の方法。
【請求項４】
前記索引は、別の検索範囲が前記範囲関連索引キーの組合せによって定義されるように、前記組合せに従って構成された追加の文書レコードを含むパーティションを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記パーティションは、前記パーティションをコピーして新しいパーティションを作成するとともに、前記文書レコードを範囲関連索引キーの新しい組合せに対応する前記新しいパーティションに挿入することによって、前記新しい組合せが作成されたときに更新されることを特徴とする請求項４に記載の方法。
【請求項６】
追加の文書が前記プロパティに関連付けられると追加の文書レコードが前記索引の前記範囲関連索引キーに関連付けられるように、クエリの対象となる前記文書間の変更によって前記索引への更新が行われ、前記変更は、前記文書間に挿入された新しい文書、削除される前記文書間の文書、および前記文書間の文書への変更のうちの少なくとも１つに対応することを特徴とする請求項１に記載の方法。
【請求項７】
クライアント生成クエリに範囲を提供するため、範囲選択がクライアントによって選択可能であるように、前記範囲関連索引キーに従って前記範囲選択を生成するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項８】
前記文書の追加の検索範囲に関連付けられている追加のプロパティから追加の範囲関連索引キーを手動で生成し、処理するインターフェースを提供するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項９】
文書のクエリのための検索範囲を設定するシステムであって、
前記文書の範囲に関連付けられている前記文書に関するプロパティを識別し、前記識別されたプロパティに従って範囲関連索引キーを生成し、前記文書の内容に従って内容関連検索キーを生成する手段と、
索引を生成する手段と、
を含み、
前記索引は、前記内容関連索引キーに対応する第１のパーティション、および前記範囲関連索引キーに対応する第２のパーティションを含むことを特徴とするシステム。
【請求項１０】
前記索引は、別の検索範囲が前記範囲関連索引キーの組合せによって定義されるように、前記組合せに従って構成された追加の文書レコードを含む第３のパーティションをさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記索引は、追加の文書が範囲関連索引キーに関連付けられると追加の文書レコードが前記索引内の前記範囲関連索引キーに関連付けられるように、前記追加の文書がクエリの対象である前記文書間に挿入されると更新されるようにさらに構成されることを特徴とする請求項９に記載のシステム。
【請求項１２】
前記文書の追加の検索範囲に関連付けられている追加のプロパティから追加の範囲関連索引キーを手動で生成し処理するインターフェースをさらに備えたことを特徴とする請求項９に記載のシステム。
【請求項１３】
コンピュータに請求項１〜８のいずれか１項に記載の方法を実行させるためのプログラム。
【請求項１４】
コンピュータに請求項１〜８のいずれか１項に記載の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワークおよびファイルシステム間で内容を検索する場合、多くの形式で検索が提供されてきたが、通常は、検索エンジンを変形して提供されるものである。検索エンジンは、指定されたキーワードについて文書を検索し、キーワードが見つかった文書のリストを返すプログラムである。
【背景技術】
【０００２】
一般に、検索エンジンは、スパイダを発送してできるだけ多くの文書を取得してくることによって動作する。このようにして取得した文書は、インデクサと呼ばれる別のプログラムによって読み取られ、各文書に含まれる単語に基づいて索引（ｉｎｄｅｘ）が作成される。索引とは、一意のレコードをそれぞれ識別するキーまたはキーワードのリストである。索引によって、特定のレコードを見つけ、レコードを索引フィールドでより速くソートすることができるようになる。検索エンジンは、理想的にはクライアントまたはユーザによるクエリごとに意味のある結果のみが返されるように、その索引を作成するアルゴリズムを使用する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
こうしたクエリでは、一貫してキーワードまたは索引キーが使用される傾向にある。ユーザが検索クエリを長いテキスト文字列として入力しようと、ブール演算子の連結として入力しようと、検索エンジンは、キーワードに一致する文書に対応して入力されたキーワードについて、すべてのレコードを検査する。次いで、ブール演算子の制約を満たす、または長いテキスト文字列に対応するレコードのサブセットが戻される。これらのレコードの検査は、時間がかかり、費用がかかる操作となる可能性がある。さらに、クライアントは、特定のキーワードを含む文書の全レコード検索を望まない場合がある。
【課題を解決するための手段】
【０００４】
本発明の実施態様は、単にキーワードを提供するのではなく、検索の範囲を定義する範囲キーと呼ばれる索引キーのクラスを提供することによって上記の制限を解消するシステムおよび方法に関連する。範囲キーが検索クエリに入力されると、範囲キーは、検索される索引レコードの範囲を限定する。例えば、範囲キーは、検索結果を、．ｍｐｇファイルなど何らかのファイルタイプに限定することによって検索の範囲を限定することができる。別の範囲キーは、ＵＲＬ（ユニフォームリソースロケータ）に従って検索の範囲を限定することができ、したがってそのＵＲＬ下の文書のみが検索される。さらに別の範囲キーは、検索の範囲を、ユーザのコンピュータまたは他のネットワーク接続されたコンピュータ上の特定のデータベースに限定することができる。したがって本発明は、ユーザが特定のクラスの索引キーを使用して検索の範囲を限定することができるようにすることによって検索の時間および費用を大幅に低減することにより、上記の問題を解決する。
【０００５】
本発明の別の態様によれば、複合範囲も認識され、格納される。この追加の索引パーティションは、基本的な範囲の組合せである範囲定義を含む。これらの複合範囲に対応する文書はすでに解決されており、これらの複合範囲を参照すると、より迅速な検索が可能となる。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態例で使用することができるコンピューティング装置例を示す図である。
【図２】本発明による索引キーを使用して検索を絞込むためのシステム例を示すブロック図である。
【図３】本発明による索引の構造例を示すブロック図である。
【図４】本発明による複合範囲の管理を示すブロック図である。
【図５】本発明による索引の生成のプロセス例を示す論理フローチャートである。
【図６】本発明による索引のコンパイルのプロセス例を示す論理フローチャートである。
【図７】本発明によるクエリの処理のプロセス例を示す論理フローチャートである。
【発明を実施するための形態】
【０００７】
次に、本明細書の一部を形成し、一例として本発明を実施する特定の実施形態例を示す添付の図面を参照して本発明について以下でより十分説明する。しかし、本発明は、異なる多くの形態で具体化することができ、本明細書に記載した実施形態に限定されるものと解釈されないものとする。むしろ、これらの実施形態は、この開示が完全で欠落がなく、本発明の範囲を当業者に十分伝えるように提供される。特に、本発明は、方法または装置として具体化することができる。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。したがって、以下の詳細な説明を限定の意味で理解すべきではない。
【０００８】
動作環境例
図１を参照すると、本発明を実施する１つのシステム例は、コンピューティング装置１００などのコンピューティング装置を含んでいる。コンピューティング装置１００は、クライアント、サーバ、モバイル装置、または他の任意のコンピューティング装置として構成することができる。極めて基本的な構成では、コンピューティング装置１００は一般に、少なくとも１つの処理ユニット１０２およびシステムメモリ１０４を含む。コンピューティング装置の正確な構成および種類に応じて、システムメモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこれら２つの何らかの組合せとすることができる。システムメモリ１０４は、一般にオペレーティングシステム１０５、１つまたは複数のアプリケーション１０６を含んでおり、またプログラムデータ１０７を含んでいてもよい。一実施形態において、アプリケーション１０６は、本発明の機能を実施する検索絞込みアプリケーション１２０を含む。この基本的な構成は、図１の点線１０８内の構成要素によって示している。
【０００９】
コンピューティング装置１００は、追加の特徴および機能を有していてもよい。例えば、コンピューティング装置１００は、磁気ディスク、光ディスク、テープなどの追加のデータ記憶装置（取外式および／または固定式）を含むこともできる。こうした別の記憶装置を、図１に、取外式記憶装置１０９および固定式記憶装置１１０で示している。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性の取外式および固定式媒体などがある。システムメモリ１０４、取外式記憶装置１０９、および固定式記憶装置１１０は、すべてコンピュータ記憶装置媒体の例である。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピューティング装置１００からアクセスできる他の任意の媒体などがある。こうした任意のコンピュータ記憶媒体は、装置１００の一部とすることができる。コンピューティング装置１００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１１２を有することもできる。ディスプレイ、スピーカ、プリンタなどの出力装置１１４を含むこともできる。
【００１０】
コンピューティング装置１００は、装置が例えばネットワークを介して他のコンピューティング装置１１８と通信できるようにする通信接続１１６も含む。通信接続１１６は、通信媒体の一例である。通信媒体は一般に、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータによって搬送波または他の移送機構などの変調されたデータ信号に組み込まれる。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号に情報を符号化するように１つまたは複数のその特性が設定または変更された信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。コンピュータ読取可能な媒体という用語は、本明細書で使用する場合、記憶媒体および通信媒体の両方を含む。
【００１１】
検索を絞込むための実施形態例
次の説明および特許請求の範囲を通じて、「文書」という用語は、ネットワーク文書、ファイル、フォルダ、Ｗｅｂページ、および他のリソースなど、ネットワークの検索クエリまたはクロールの結果として返される任意の考え得るリソースを指す。「索引キー」という用語は、索引の検索クエリまたは作成で１組の文書を標的にするために使用される検索に関連付けられている任意のキーワードまたはキーを指す。「範囲キー」という用語は、検索が開始される前に検索される文書の数が低減されるように、検索の範囲を絞るために使用することができる任意の索引キーを指す。検索の範囲は、ファイルタイプなどの属性、何らかのデータベースまたはＵＲＬなどの場所に従って、または検索される文書の数を低減する他の基準によって絞ることができる。
【００１２】
本発明の実施形態は、索引内の各項目の範囲を範囲キーで表し、適切な範囲キーを別の制限としてクエリに追加することによって絞込まれた（ｓｃｏｐｅｄ）すべてのクエリのクエリ効率を上げることに関連する。この方法は、文書のプロパティ（ＵＲＬまたは他のメタデータなど）に基づいてユーザキーワードに一致する文書ごとに範囲条件を再計算する方法とは対照的に提供される。ほとんどの範囲は、すべてクロールされた１組の項目の細い１片を表すため、絞込まれたクエリの効率は、その１片の細さより少ないが、それに関連する倍数だけ向上する。一例において、ポータル（すなわち検索を含む多数のサービスを提供するＷｅｂサイト）の管理者は、ポータルのユーザが機能上の仕様に特に興味があると決定することができる。したがって、他の文書内のこうした無用の単語をふるいにかけることなく、キーワードについてこれらの仕様を検索するだけの検索機構を提供することができるという点で有利となる。管理インターフェースを介して、管理者は、ｒｕｌｅ：ｐｒｏｆｉｌｅ＝”ｓｐｅｃ”を有する範囲を定義することができる。またはこの範囲は、基本的な範囲としてすでに定義されていてもよい。管理者は、基本的な範囲を使用して、rule:profile="spec" AND filetype="Text" AND author!="John Doe"を有する複合範囲を定義することができる。この範囲にクライアントのユーザインターフェースのわかりやすい名前を提供し、この範囲がどのサイトから入手可能であるかを指定した後、範囲は、クライアントのドロップダウン範囲リストに表示される。この範囲選択は、そのプロパティ値を含む文書のみをクエリ結果として返す。このように管理者によって定義された範囲は、作成された範囲と呼ぶこともできる。
【００１３】
さらに、いくつかのデフォルトの範囲選択を使用することができる。一般のクライアントに、単に絞込まれていないクエリを示す「すべての内容」を検索する選択肢を示すことができる。「このサイト」の範囲選択は、現在のサイトおよびそのサブサイトのすべての文書を検索する。特定のサブセットに含まれる文書の範囲を指定するだけというよりむしろ、いくつかの結果を除外する範囲を生成することもできる。例えば、範囲定義は、テキスト（．ｔｘｔ）文書を除くすべての文書タイプについての検索に対応することができる。特定のＷｅｂサイトＵＲＬに関連付けられているものを除いて、ネットワークにおけるすべての文書の検索に対応することができる別の範囲定義を考えることもできる。範囲選択の数は、デフォルトであろうと、作成されたものであろうと、その他の場合であろうと、本明細書に記載したものに限定されない。
【００１４】
別の実施形態においては、クライアントに、検索要求に直接範囲キーを入力する選択肢が与えられる場合もある。クライアントによって使いやすい名前が範囲キーに与えられ、検索要求にその名前を入力すると、関連する範囲によって検索が限定される。
【００１５】
図２は、本発明による索引キーを使用して検索を絞込む（ｓｃｏｐｉｎｇ）システム例の機能ブロック図を示している。システム２００は、索引２１０、パイプライン２２０、文書インターフェース２３０、クライアントインターフェース２４０、範囲プラグイン２５０、索引作成プラグイン２６０、範囲の記述２７０、および管理インターフェース２８０を含む。
【００１６】
索引２１０は、内容キー（すなわちキーワード）および範囲キーの別々の索引を含むように構成される。索引２１０の構成のより詳細な説明については、図３の説明で後述する。これらの索引のレコードは、クライアントのクエリに結果を提供するのに使用される。一実施形態において、索引２１０は、索引レコードの記憶域をまとめて提供する複数のデータベースに対応する。
【００１７】
パイプライン２２０は、索引作成のために文書または文書のレコードを取得する収集機構の表現例である。パイプライン２２０は、データに対応するレコードが索引２１０に入力される前に様々なプラグイン（範囲プラグイン２５０など）によるデータのフィルタリングを可能にする。
【００１８】
文書インターフェース２３０は、複数のデータベースおよびネットワーク場所を介して文書を取り出すためのプロトコル、ネットワークアクセスポイント、およびデータベースアクセスポイントを提供する。例えば、文書インターフェース２３０は、インターネットへのアクセスを提供するとともに、ローカルサーバのデータベースへのアクセスおよび現在のコンピューティング装置上のデータベースへのアクセスを提供することができる。他の実施形態は、本発明の意図または範囲から逸脱することなく、様々なプロトコルを使用して他の文書位置にアクセスすることができる。
【００１９】
クライアントインターフェース２４０は、検索を定義し、開始するためのクライアントによるアクセスを提供する。検索は、キーワードおよび／または範囲キーに従って定義することができる。検索クエリを処理する方法例については、以下、図７を参照して詳しく説明する。
【００２０】
範囲プラグイン２５０は、いくつかの収集パイプラインプラグインのうちの１つである。範囲プラグイン２５０は、範囲キー（すなわち範囲索引内で索引付けされる項目）として再度発行されるプロパティ値を識別する。範囲（例えばファイルタイプ、ＵＲＬなど）に対して興味のあるプロパティとして識別されたプロパティは、文書インターフェース２３０を介して提供された文書がクロールされる間に範囲プラグイン２５０によって集められる。これらのプロパティは、範囲プラグイン２５０によってパイプライン２２０に再度発行されて、索引２１０に含まれる。これらのプロパティは、これらのプロパティに従ってクライアントに範囲選択を提供する管理者または他の操作者（ｅｎｔｉｔｙ）によっても使用可能である。
【００２１】
索引作成プラグイン２６０は、パイプライン２２０に接続された別のプラグインである。索引作成プラグインは、索引２１０を生成し、パーティションし、更新する機構を提供する。索引２１０を生成する方法例については、以下の図５の説明でより詳しく説明する。索引２１０を更新する方法例については、以下の図６の説明でより詳しく説明する。一実施形態において、索引作成プラグイン２６０は、キーワードを一時的にキャッシュし、これらの結果が索引２１０にフラッシュされる前にクロールされた文書から生成されたキーを絞込む単語リストを提供する。索引２１０のレコードは、これらの単語リストに含まれるクロール結果からのデータで埋められる。
【００２２】
範囲の記述２７０は、範囲についての情報を格納するテーブルを提供する。例えば、範囲の記述２７０は、範囲、範囲のルール、可視性、および範囲関連のプロパティ、および検索クエリで使用するために生成された範囲選択に対応する他の属性など、管理情報および内部情報を含み得る。範囲の記述２７０は、範囲プラグイン２５０を介して範囲選択を生成するプロパティを受信する。範囲の記述２７０は、索引２１０内の範囲索引の生成および構成のために、索引作成プラグイン２６０によってもアクセスされる。索引２１０も、複合範囲別索引の生成および更新のために、範囲の記述２７０にアクセスする（以下の図３および図４を参照）。また、範囲の記述２７０は、クライアントが検索クエリに含めるための範囲、または検索に適用するための範囲選択を選択できるように、クライアントインターフェース２４０でもアクセスされる。
【００２３】
管理インターフェース２８０も、管理者または他の制御機構（例えば自動プログラム）が、範囲プラグイン２５０によって提供されたプロパティを取得し、検索クエリを使用するための範囲選択を作成することができるように、範囲の記述２７０にアクセスする。管理インターフェース２８０は、（例えばインターネットログインアクセスを介して）範囲選択の作成、および範囲の記述の操作を可能にする任意のフォーマットに従って提供され得る。
【００２４】
機能ブロック間の一方向および双方向の通信のシステム２００を示しているが、こうした通信タイプの任意のものを、本発明の意図および範囲から逸脱することなく、別のタイプに変更することができる（例えばすべての通信は、一方向通信ではなく双方向を必要とする受信通知メッセージを有し得る）。
【００２５】
図３は、本発明による索引の構造例の機能ブロック図を示している。索引３００は、内容別索引（ｃｏｎｔｅｎｔｉｎｄｅｘ）（．ｃｉ）３１０、基本的範囲別索引（ｂａｓｉｃ ｓｃｏｐｅｓ ｉｎｄｅｘ）（．ｂｓｉ）３２０、および複合範囲別索引（ｃｏｍｐｏｕｎｄｓｃｏｐｅｓ ｉｎｄｅｘ）（．ｃｓｉ）３３０を含む。
【００２６】
内容別索引３１０は、検索クエリで使用されるキーワードおよび他の索引キーに対応する文書を列挙する逆引き索引（ｉｎｖｅｒｔｅｄｉｎｄｅｘ）で構成されるレコードを含む。しかし、範囲キーは、基本的範囲別索引３２０に流用される。
【００２７】
基本的範囲別索引３２０は、基本的な範囲に対応する文書のレコードを含む。基本的な範囲は、一般に、文書の単一の範囲関連プロパティに対応する範囲選択を指す。例えば、サイトhttp:/lwww.example.comでクロールされた文書の数字ＩＤは、プロパティ（サイト）および値（「ｅｘａｍｐｌｅ．ｃｏｍ」）を包含するように範囲プラグイン２５０によって構成された範囲キーの文書リストに記録される。
【００２８】
複合範囲別索引３３０は、基本的範囲別索引３２０の基本的な範囲の組合せから生成された範囲を含む。例えば、１つの複合範囲は、特定のＵＲＬにも関連する特定のファイルタイプの文書のレコードを含むことができる。
【００２９】
図４は、本発明による複合範囲を管理するためのブロック図例を示している。ブロック図４００は、基本的範囲別索引４１０、元の複合範囲別索引４２０、および新しい複合範囲別索引４３０を含む。
【００３０】
基本的範囲別索引が追加の基本的な範囲で更新されると（以下の図６参照）、複合範囲別索引も更新されなければならない。元の複合範囲別索引４２０の位置線４２２は、新しい複合範囲が含まれるべき位置を示している。元の複合範囲別索引４２０のコピーが作成されて、新しい複合範囲別索引４３０が生成される。元の複合範囲別索引４２０のコピーは、新しい複合範囲が含まれるべき位置に到達するまで作成される。次いで新しい複合範囲４３２は、新しい複合範囲別索引４３０に書き込まれる。新しい複合範囲４３２が含まれた後、引き続き元の複合範囲別索引４２０のコピーが続行する。新しい複合範囲４３２に続く複合範囲４３４は、新しい複合範囲４３２の包含を補うオフセットだけ相殺して元の複合範囲別索引４２０からコピーされる。
【００３１】
図５は、本発明による索引を生成するプロセス例の論理フローチャートを示している。プロセス５００は、ブロック５０２で開始し、アクセスが文書のコーパスに提供される。処理はブロック５０４に進む。
【００３２】
ブロック５０４で、文書のコーパスがクロールされて、存在する文書、およびこうした文書に関連付けられているプロパティ（ファイルタイプなど）を決定する。次いで文書ごとの識別子またはＩＤ、およびその関連のプロパティがクロールの結果として転送される。処理はブロック５０６に進む。
【００３３】
ブロック５０６で、範囲に関連する文書に関連付けられているプロパティが範囲プラグインによって取得される。範囲プラグインは、プロパティから範囲定義を作成する。範囲定義は、クライアントがその範囲に従って検索を限定することができる範囲選択を作成するために管理者が使用することができる。処理はブロック５０８に進む。
【００３４】
ブロック５０８で、取得されたプロパティから作成された範囲定義は、クロールの結果の間に範囲キーとして発行される。これらの範囲キーは、文書の内容よりむしろ検索の範囲を対象としながら、クロールから生成されたキーワードおよび他の索引キーと同じように動作する。範囲キーの生成のために取得されたプロパティの一部は、文書タイプ、文書のＵＲＬ、文書の作成者、および他のプロパティを含む。範囲キーは、範囲キーのタイプの識別子（ＩＤ）、および特定の範囲キーを識別するテキスト文字列を含むように生成される。例えば、範囲キー関連のＵＲＬのＩＤが２３７である場合、http://www.example.com内の文書に対応する範囲キーは「［２３７］http://www.example.com」となる。この範囲キーは、パイプライン内に発行され、実質的に索引内の文書に関連付けられる。範囲キーが発行されると、処理はブロック５１０に進む。
【００３５】
ブロック５１０で、範囲キー、キーワード、およびすべての文書内で見つけられた他の蓄積されたプロパティが索引に送込まれる（ｆｌｕｓｈｅｄ）。この送込みによって、キーおよびプロパティがディスクに書き込まれる。送込みの間、範囲キーは、分けられ、基本的範囲別索引に送信され、残りのデータは内容別索引に送信される。処理はブロック５１２に進む。
【００３６】
ブロック５１２で、複合範囲別索引が索引内に生成される。一実施形態において、索引について開始されたコンパイルプロセスに応答して複合範囲別索引が生成される。複合範囲別索引の生成に使用される１つのプロセス例については、以下の図６の説明で説明する。一実施形態において、複合範囲は、クライアントからのクエリによって定義される。別の実施形態において、索引がインスタンス化される前に管理者によって複合範囲のリストが生成される。複合範囲別索引が生成されると、処理はブロック５１４に進み、プロセス５００が終了する。
【００３７】
一実施形態においては、クロールが開始されると基本的範囲別索引はデータで埋められるが、複合範囲別索引は、クロールが完了し、基本的範囲別索引が完全に構築されるまで埋められない。複合範囲別索引の構築を待つことで、基本的範囲別索引へのクエリを低減することによってオーバーヘッドが低減する。
【００３８】
図６は、本発明による索引をコンパイルするプロセス例の論理フローチャートを示している。プロセス６００は、ブロック６０２で開始し、コンパイルプロセスが開始する。一実施形態において、プロセス６００は、任意の既存の複合範囲を更新するために、ある時間間隔（例えば１５分ごと）で非同期的に開始される。別の実施形態において、図５のプロセス５００がブロック５１２に入ると、プロセス６００が開始されて、新しく生成された基本的範囲別索引から複合範囲別索引が生成される。さらに別の実施形態において、プロセス６００は、この索引への別の送込みに応答して開始される。プロセス６００が開始すると、処理は決定ブロック６０４に進む。
【００３９】
決定ブロック６０４で、複合範囲別索引内の各範囲に対応する変更レコードは、現在の複合範囲が変わったことを示しているかどうかの決定が行われる。一実施形態において、初めて複合範囲別索引を生成するには、同様のプロセスを使用し、そのデフォルトの設定は、すべての範囲が変わったということを前提とする。したがって、新しい複合範囲別索引の生成、および複合範囲別索引の更新は、同じコンパイルプロセスによって処理される。複合範囲が変わると、処理はブロック６０６に進む。
【００４０】
ブロック６０６で、コンパイルプロセスは、ユーザクエリに類似のクエリを実行し、クエリプロセスが複合範囲別索引内の範囲に対応する文書のリストを更新することができるようにする。次いで文書のリストは、複合範囲別索引が（前のバージョンが存在するときは）その前のバージョンからコピーされると、複合範囲別索引に追加される。処理は決定ブロック６１０に進む。
【００４１】
あるいは、変更レコードが特定の範囲は変わっていないことを示す場合、処理はブロック６０８に進む。ブロック６０８で、範囲は変わっていないため、複合範囲別索引の前のバージョンの範囲に対応する文書ＩＤのリストがそっくりそのままコピーされる。処理は決定ブロック６１０に進む。
【００４２】
決定ブロック６１０で、コンパイルプロセス中により多くの複合範囲を新しい複合範囲別索引にコピーする必要があるかどうかの決定が行われる。より多くの複合範囲をコピーすべき場合、処理は決定ブロック６１０に戻って、複合範囲が変わったかどうかの決定が行われる。しかし、より多くの複合範囲を新しい複合範囲別索引に転送する必要がない場合、処理はブロック６１２に進み、処理６００が終了する。
【００４３】
文書のコーパスに対する更新は、いつでも行うことができる。文書のコーパスの文書ＩＤは、メモリ内単語リスト、または複数の単語リストで連続的に更新される。単語リストを埋めることは、クライアントにより開始された検索、コーパスが再度クロールされるようにするリフレッシュ動作（ａｃｔｉｏｎ）、または文書のコーパス間での変更の発見をもたらす他の様々な操作のいずれかから生じる。文書が変更される（追加、削除、変更など）と、変更された文書の文書ＩＤは、次いで、変更の種類とともにメモリ内単語リストに転送される。更新された文書ＩＤを含む単語リストは、次いで索引に送込まれる。文書への変更によって、内容別索引への更新が行われるとともに、基本的範囲別索引も更新される。変更を発見した漸進的なクロールが完了し、基本的範囲別索引が更新されると、ネットワーク上の文書への変更を反映するように複合範囲別索引も更新される。プロセス６００は、更新が検索される文書のコーパス間での新しい文書であるか、コーパスからの文書の削除であるか、文書の範囲に影響を与える文書への変更であるかに関係なく、複合範囲別索引での更新を反映するために使用される。複雑なプロセスを非同期に稼働させることによって、ネットワーク上の文書への変更を反映するために複合範囲別索引が頻繁に更新される。
【００４４】
図７は、本発明によるクエリを処理するプロセス例の論理フローチャートを示している。プロセス７００は、ブロック７０２で開始し、索引がインスタンス化され、クライアントからクエリを受け付ける用意ができている。処理は決定ブロック７０４に進む。
【００４５】
決定ブロック７０４で、検索クエリがクライアントによって開始されたかどうかの決定が行われる。クライアントは、クエリを開始するユーザ、または検索を要求しているプログラムに対応している。検索が開始されていない場合、検索クエリが開始されるのを待っている間、処理はブロック７０４に戻る。しかし、検索クエリが開始すると、処理は決定ブロック７０６に進む。
【００４６】
決定ブロック７０６で、範囲キーが検索要求に使用されたかどうかの決定が行われる。範囲キーが存在しない場合、処理はブロック７１６に進む。しかし、範囲キーが検索要求に存在する場合、処理は決定ブロック７０８に進む。
【００４７】
決定ブロック７０８で、範囲キーのインスタンスが複合範囲の一部であるかどうかの決定が行われる。範囲キーが複合範囲の一部として使用されていない場合、処理は決定ブロック７１２に進む。しかし、範囲キーが複合範囲の一部である場合、処理はブロック７１０に進む。
【００４８】
ブロック７１０で、検索クエリに含まれる複合範囲に対応するとして、その文書ＩＤによって識別される文書について、複合範囲別索引（．ｃｓｉ）が調べられる。次いで、検索の完了まで、これらの文書に対応する文書ＩＤが戻されて、検索結果に追加される。処理は決定ブロック７１２に進む。
【００４９】
決定ブロック７１２で、範囲キーのインスタンスが複合範囲の一部であるかどうかの決定が行われる。範囲キーが基本的な範囲に対応していない場合、処理はブロック７１６に進む。しかし、範囲キーが基本的な範囲に対応している場合、処理はブロック７１４に進む。
【００５０】
ブロック７１４で、検索クエリに含まれる範囲キーに対応するとして、その文書ＩＤによって識別される文書について基本的範囲別索引（．ｂｓｉ）が調べられる。次いで、検索の完了まで、これらの文書に対応する文書ＩＤが戻されて、検索結果に追加される。処理は決定ブロック７１６に進む。
【００５１】
決定ブロック７１６で、文書の内容に関連するキーワードまたは他の索引キーが検索要求に含まれているかどうかの決定が行われる。キーワードが検索要求に含まれていない場合、処理は決定ブロック７２０に進む。しかし、キーワードが検索要求に含まれている場合、処理はブロック７１８に移動する。
【００５２】
ブロック７０８で、検索クエリに含まれるキーワードに対応するとして、その文書ＩＤによって識別される文書について内容別索引（．ｃｉ）が調べられる。一実施形態において、内容別索引をキーワードについて検索するとき、検索は、基本的範囲別索引および／または複合範囲別索引に従って予め定義されている範囲に限定される。次いで、検索の完成まで、これらの文書に対応する文書ＩＤが戻されて、検索結果に追加される。処理は決定ブロック７１０に進む。
【００５３】
ブロック７２０で、異なる索引パーティションで重複する文書の文書ＩＤの集まりがクエリ結果として返される。例えば、文書ＩＤは、基本的範囲別索引の範囲に対応し、特定のキーワードを含む可能性もある。検索結果がこの特定の範囲によって限定され、キーワードを含んでいる場合、文書ＩＤは、索引パーティション間で重複することになる。これらの重複するＩＤは、検索の結果を表す。結果に含まれる各文書へのポインタは、次いで検索要求に応答してクライアントに提供することができる。一般に、文書が特定の範囲を有するかどうかを確認するために、文書プロパティを調べる代わりに、索引間の重複する文書を決定するのがかなり迅速である。一般に文書プロパティが無作為にデータベース内にある場合、索引は、キー（範囲キーまたはキーワード）に従ってディスク上にクラスタ化される。したがって本発明は、範囲を検索クエリに適用することができる速度が大幅に向上し、およびより容易となる。結果が提供されると、処理はブロック７２２に移動して、処理７００は終了する。
【００５４】
一実施形態において、操作ブロック７０８〜７１８で提供されたプロセスステップは、順次的なものではない。代わりに、基本的範囲別索引、または複合範囲別索引、または内容別索引は、通常のキー、およびクエリの範囲キーに基づいて調べられ、それらが調べられる順序は、キーに対応する文書ＩＤのソート順によって決まる。さらに、検索クエリには複数の範囲、つまり複合範囲および基本的な範囲がある場合があるため、操作ブロック７０８〜７１８で提供された処理ステップを複数回繰り返す必要がある場合がある。
【００５５】
別の実施形態において、新しい複合範囲が要求によって作成される場合、複合範囲別索引は、各検索要求の後に新しい複合範囲で更新される。複合範囲別索引は、上記の図４の説明で提供された方法に従って更新される。
【００５６】
さらに別の実施形態において、検索要求の絞込まれた部分は、クライアントによってなされた検索選択である。検索選択は、提供された範囲のリストに従って予め選択された結果の範囲に対応する。範囲のこのリストは、範囲定義に従って管理者によって生成することができる。
【００５７】
上記の仕様、例、およびデータにより、製造する際の完全な説明および本発明の構成の使用が提供されている。本発明の多くの実施形態は、本発明の意図および範囲から逸脱することなく作成することができるので、本発明は特許請求の範囲にある。
【符号の説明】
【００５８】
１００ コンピューティング装置
１０２ 処理ユニット
１０４ システムメモリ
１０５ オペレーティングシステム
１０６ アプリケーション
１０７ プログラムデータ
１０９ 取外式記憶装置
１１０ 固定式記憶装置
１１２ 入力装置
１１４ 出力装置
１１６ 通信接続
１１８ 他のコンピューティング装置
１２０ 検索絞込み
【図１】
2014222538.tif 000003
【図２】
2014222538.tif 000004
【図３】
2014222538.tif 000005
【図４】
2014222538.tif 000006
【図５】
2014222538.tif 000007
【図６】
2014222538.tif 000008
【図７】
2014222538.tif 000009