(57)【特許請求の範囲】
【請求項１】
電子メールメッセージ処理のための方法であって、
電子メールメッセージに関連する１セットのキーワードを取得する工程と、
１または複数のコンピュータプロセッサを用いて、前記１セットのキーワードに少なくとも部分的に基づいて、レベル１キャッシュに格納された１セットの転置インデックスレコードを更新する工程と、
前記レベル１キャッシュに格納された前記１セットの転置インデックスレコードのサイズが第１の所定の閾値を超えたか否かを判定する工程と、
前記第１の所定の閾値を超えた場合に、前記レベル１キャッシュ内の前記１セットの転置インデックスレコードをレベル２キャッシュに転送する工程と、
レベル２キャッシュファイルのサイズが第２の所定の閾値を超えたか否かを判定する工程と、
前記第２の所定の閾値を超えた場合に、前記キーワードと、対応するレベル３転置インデックスファイルとのマッピング関係情報を格納するパスファイルに従って、１セットの転置インデックスファイルを格納するレベル３キャッシュに前記レベル２キャッシュファイル内の転置インデックスレコードを転送する工程と、
を備える、方法。
【請求項２】
請求項１に記載の方法であって、さらに、
レベル３転置インデックスファイルのサイズが第３の所定の閾値を超えたか否かを判定する工程と、
前記レベル３転置インデックスファイルの前記サイズが前記第３の所定の閾値を超えた場合に、前記レベル３転置インデックスファイルを２つの転置インデックスサブファイルに分割する工程と、
前記２つの分割された転置インデックスサブファイルに従って、前記パスファイルを更新する工程と、
を備える、方法。
【請求項３】
請求項１に記載の方法であって、前記レベル２キャッシュファイル内の前記転置インデックスレコードをレベル３転置インデックスファイルに転送する工程は、
前記レベル２キャッシュファイル内のレベル２転置インデックスレコードをメモリにフェッチする工程と、
前記パスファイルに基づいて、前記レベル２転置インデックスレコード内のキーワードに対応する前記レベル３転置インデックスファイルを決定する工程と、
前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２転置インデックスレコードを転送する工程と、
を含む、方法。
【請求項４】
請求項３に記載の方法であって、前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送する工程は、アペンドモードで実行される、方法。
【請求項５】
請求項３に記載の方法であって、１つのレベル３転置インデックスファイルが、初期静的圧縮ファイルおよび増分ファイルを備える、方法。
【請求項６】
請求項５に記載の方法であって、前記キーワードに従って、前記レベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送する工程は、
前記キーワードに従って、前記増分ファイルに前記レベル２転置インデックスレコードを転送する工程と、
前記増分ファイルが増分閾値を超えたか否かを判定する工程と、
前記増分閾値を超えた場合に、前記初期静的圧縮ファイルを解凍して、解凍済みの初期静的ファイルを取得する工程と、
前記解凍済みの初期静的ファイルおよび前記増分ファイルをマージして、マージファイルを取得する工程と、
前記マージファイルを圧縮して、現行の静的圧縮を生成する工程と、
を含む、方法。
【請求項７】
請求項１に記載の方法であって、さらに、
ユーザによって送信された１または複数の検索キーワードのセットを取得する工程と、
前記パスファイルに従って、前記ユーザによって送信された前記検索キーワードに対応するレベル３転置インデックスファイルを決定する工程と、
前記レベル３転置インデックスファイルに基づいて、前記検索キーワードを含む第１のメールセットを、前記レベル１キャッシュに基づいて、前記検索キーワードを含む第２のメールセットを、そして、前記レベル２キャッシュファイルに基づいて、前記検索キーワードを含む第３のメールセットを決定する工程と、
前記第１のメールセット、第２のメールセット、および、第３のメールセットをマージして、検索結果を得る工程と、
を備える、方法。
【請求項８】
電子メールメッセージを処理するためのシステムであって、
１または複数のプロセッサであって、
電子メールメッセージに関連する１セットのキーワードを取得し、
前記１セットのキーワードに少なくとも部分的に基づいて、レベル１キャッシュに格納された１セットの転置インデックスレコードを更新し、
前記レベル１キャッシュに格納された前記１セットの転置インデックスレコードのサイズが第１の所定の閾値を超えたか否かを判定し、
前記第１の所定の閾値を超えた場合に、前記レベル１キャッシュ内の前記１セットの転置インデックスレコードをレベル２キャッシュに転送し、
レベル２キャッシュファイルのサイズが第２の所定の閾値を超えたか否かを判定し、
前記第２の所定の閾値を超えた場合に、前記キーワードと、対応するレベル３転置インデックスファイルとのマッピング関係情報を格納するパスファイルに従って、１セットの転置インデックスファイルを格納するレベル３キャッシュに前記レベル２キャッシュファイル内の転置インデックスレコードを転送するよう構成された、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するよう構成された１または複数のメモリと、
を備える、システム。
【請求項９】
請求項８に記載のシステムであって、前記１または複数のプロセッサは、さらに、
レベル３転置インデックスファイルのサイズが第３の所定の閾値を超えたか否かを判定し、
前記レベル３転置インデックスファイルの前記サイズが前記第３の所定の閾値を超えた場合に、前記レベル３転置インデックスファイルを２つの転置インデックスサブファイルに分割し、
前記２つの分割された転置インデックスサブファイルに従って、前記パスファイルを更新するよう構成されている、システム。
【請求項１０】
請求項８に記載のシステムであって、前記レベル２キャッシュファイル内の前記転置インデックスレコードをレベル３転置インデックスファイルに転送することは、
前記レベル２キャッシュファイル内のレベル２転置インデックスレコードをメモリにフェッチし、
前記パスファイルに基づいて、前記レベル２転置インデックスレコード内のキーワードに対応する前記レベル３転置インデックスファイルを決定し、
前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２転置インデックスレコードを転送することを含む、システム。
【請求項１１】
請求項１０に記載のシステムであって、前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送することは、アペンドモードで実行される、システム。
【請求項１２】
請求項１０に記載のシステムであって、１つのレベル３転置インデックスファイルが、初期静的圧縮ファイルおよび増分ファイルを備える、システム。
【請求項１３】
請求項１２に記載のシステムであって、前記キーワードに従って、前記レベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送することは、
前記キーワードに従って、前記増分ファイルに前記レベル２転置インデックスレコードを転送し、
前記増分ファイルが増分閾値を超えたか否かを判定し、
前記増分閾値を超えた場合に、前記初期静的圧縮ファイルを解凍して、解凍済みの初期静的ファイルを取得し、
前記解凍済みの初期静的ファイルおよび前記増分ファイルをマージして、マージファイルを取得し、
前記マージファイルを圧縮して、現行の静的圧縮を生成することを含む、システム。
【請求項１４】
請求項８に記載のシステムであって、前記１または複数のプロセッサは、さらに、
ユーザによって送信された１または複数の検索キーワードのセットを取得し、
前記パスファイルに従って、前記ユーザによって送信された前記検索キーワードに対応するレベル３転置インデックスファイルを決定し、
前記レベル３転置インデックスファイルに基づいて、前記検索キーワードを含む第１のメールセットを、前記レベル１キャッシュに基づいて、前記検索キーワードを含む第２のメールセットを、そして、前記レベル２キャッシュファイルに基づいて、前記検索キーワードを含む第３のメールセットを決定し、
前記第１のメールセット、第２のメールセット、および、第３のメールセットをマージして、検索結果を得るよう構成されている、システム。
【請求項１５】
電子メールメッセージ処理のためのコンピュータプログラムであって、
電子メールメッセージに関連する１セットのキーワードを取得するための機能と、
前記１セットのキーワードに少なくとも部分的に基づいて、レベル１キャッシュに格納された１セットの転置インデックスレコードを更新するための機能と、
前記レベル１キャッシュに格納された前記１セットの転置インデックスレコードのサイズが第１の所定の閾値を超えたか否かを判定するための機能と、
前記第１の所定の閾値を超えた場合に、前記レベル１キャッシュ内の前記１セットの転置インデックスレコードをレベル２キャッシュに転送するための機能と、
レベル２キャッシュファイルのサイズが第２の所定の閾値を超えたか否かを判定するための機能と、
前記第２の所定の閾値を超えた場合に、前記キーワードと、対応するレベル３転置インデックスファイルとのマッピング関係情報を格納するパスファイルに従って、１セットの転置インデックスファイルを格納するレベル３キャッシュに前記レベル２キャッシュファイル内の転置インデックスレコードを転送するための機能と、
をコンピュータに実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
他の出願の相互参照
本願は、２０１２年９月２１日出願の中国特許出願第２０１２１０３５７２６９．６号「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＥＳＴＡＢＬＩＳＨＩＮＧ  ＭＡＩＬ  ＩＮＤＩＣＥＳ  ＡＮＤ  ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＳＥＡＲＣＨＩＮＧ  ＭＡＩＬ」の優先権を主張する。当該出願は、すべての目的のために参照により本明細書に組み込まれる。
【０００２】
本願は、ネットワークデータ処理の分野に関し、特に、メールインデックスを確立してメール検索を実行するための方法およびシステムに関する。
【背景技術】
【０００３】
インターネット通信が次第に広まって、ますます多くのユーザがメール（特に、電子メールすなわちＥメール）で通信するようになるにつれ、メールボックス検索がデータ検索の中でも重要な検索技術になった。メールボックス検索は、通例、メールボックスインデックスに基づいている。すなわち、ユーザのメールはすべて、通例、メールボックスインデックスを用いて検索される。
【０００４】
メールインデックスを確立するための１つの既存の方法は、以下の通りである：概して、メールボックスインデックスが、転置インデックスの形態で確立される。例えば、ｄｏｃ＿ｉｄ１、ｄｏｃ＿ｉｄ２、および、ｄｏｃ＿ｉｄ３という名称の３つのメールファイルがあり、いずれも「ｈｅｌｌｏ  ｍｙ  ｗｏｒｌｄ」というフレーズを含んでいるとする。したがって、キーワードおよびメールファイルの対応付けを格納する転置インデックスレコードは、以下に示すようになる：
【０００５】
ｈｅｌｌｏ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，
【０００６】
ｍｙ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，
【０００７】
ｗｏｒｌｄ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３；
【０００８】
上述の転置インデックスレコードは、転置インデックスファイルに格納される。転置インデックスファイル内の各転置インデックスレコードのオフセット位置および長さが記録され、オフセット位置は、以下のように辞書ファイルに書き込まれる：
【０００９】
｛“ｈｅｌｌｏ”：｛“ｆｉｌｅ＿ｐａｔｈ”：“／ｘｘｘ／ｉｎｖｅｒｔｅｄ＿ｉｎｄｅｘ＿ｆｉｌｅ”，“ｏｆｆｓｅｔ”：０｝｝；
【００１０】
ユーザが「ｈｅｌｌｏ」を含むメールを検索すると仮定すると、辞書ファイル内のこのキーワードを含むすべてのメールを見つけることができる。すなわち、アドレス「／ｘｘｘ／ｉｎｖｅｒｔｅｄ＿ｉｎｄｅｘ＿ｆｉｌｅ」が見つけられる。次いで、この転置インデックスファイルが開かれ、オフセット「０」の位置がフェッチされ、したがって、３通のメール｛ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３｝がフェッチされうる。
【００１１】
しかしながら、新たなメールが追加されると、転置インデックスファイルは、検索結果の完全性を確保するために更新される必要がある。例えば、新たなメール（ｄｏｃ＿ｉｄ４）が追加されるとする。このメールも、合計３つのキーワード「ｈｅｌｌｏ  ｍｙ  ｗｏｒｌｄ」を含む。したがって、この時点で、転置インデックスレコードは、以下のように更新される必要がある：
【００１２】
ｈｅｌｌｏ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，ｄｏｃ＿ｉｄ４，
【００１３】
ｍｙ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，ｄｏｃ＿ｉｄ４，
【００１４】
ｗｏｒｌｄ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，ｄｏｃ＿ｉｄ４；
【００１５】
更新された転置インデックスレコードが、転置インデックスファイルに保存される場合、２つの転置インデックスレコード「ｍｙ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，ｄｏｃ＿ｉｄ４」および「ｗｏｒｌｄ−＞ｄｏｃ＿ｉｄ１，ｄｏｃ＿ｉｄ２，ｄｏｃ＿ｉｄ３，ｄｏｃ＿ｉｄ４」の元々の格納位置は、転置インデックスファイル内で変更される必要がある。同時に、辞書ファイル内の対応するオフセット値が、修正される必要がある。
【００１６】
したがって、上述の方法では、新たなメールが追加されると、転置インデックスファイルの他の関連データ内容がシフトされる必要がある。
【００１７】
上述のようにメールインデックスを用いる既存のメールボックス検索は、通例、転置インデックスファイル全体のキーワード検索を必要とする。メールデータの規模が大きくなるにつれ、メールボックスサーバは、何億もの加入者および何十億もの個々のメールメッセージを有しうる。かかる大量のデータを格納するには、大量のハードディスクＩＯリソースが必要であり、メールボックスを迅速にインデックス化することが困難ないしは不可能になる。さらに、大量のメールの格納コストは、メールサーバにとって非常に高い。結果として、大量の格納リソースが拘束されうる。
【図面の簡単な説明】
【００１８】
以下の詳細な説明と添付の図面において、本発明の様々な実施形態を開示する。
【００１９】
本願の実施形態の技術的提案または従来技術をより明確に説明するために、実施形態または従来技術の説明に用いる必要のある図面の簡単な説明を以下に示す。明らかに、以下の説明にある図面は、本願に記載の実施形態のほんの一部である。当業者であれば、創造的努力を費やすことなしに、これらの図面に基づいて他の図面を得ることができる。
【００２０】
【図１Ａ】複数レベルのキャッシュを利用するメールインデックス化システムの一実施形態を示すブロック図。
【００２１】
【図１Ｂ】メールインデックスを確立するための処理の一実施形態を示すフローチャート。
【００２２】
【図２】レベル２転置インデックスレコードをレベル３キャッシュに転送するための処理の一実施形態を示すフローチャート。
【００２３】
【図３】メールインデックスを確立するための処理の別の実施形態を示すフローチャート。
【００２４】
【図４】メールインデックスを確立するための処理の別の実施形態を示すフローチャート。
【００２５】
【図５】メール検索処理の一実施形態を示すフローチャート。
【００２６】
【図６】メールインデックスを確立するよう構成されたシステムの一実施形態を示すブロック図。
【００２７】
【図７】転送ユニットの一実施形態を示すブロック図。
【００２８】
【図８】メールインデックスを確立するよう構成されたシステムのブロック図。
【００２９】
【図９】メールインデックスを確立するよう構成されたシステムの別の実施形態を示すブロック図。
【００３０】
【図１０】メール検索システムの一実施形態を示すブロック図。
【発明を実施するための形態】
【００３１】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および／または、プロセッサ（プロセッサに接続されたメモリに格納および／またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ）を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、１または複数のデバイス、回路、および／または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【００３２】
以下では、本発明の原理を示す図面を参照しつつ、本発明の１または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【００３３】
本願に記載の技術は、多くの汎用または専用コンピュータシステム環境または構成で利用できる。これらの例は、パーソナルコンピュータ、サーバ、ハンドヘルドデバイスまたは携帯型装置、タブレット型の装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置の内の任意のものを備える分散型コンピュータ環境などを含む。
【００３４】
本願は、コンピュータによって実行されるコンピュータ実行可能なコマンド（プログラムモジュールなど）の一般的なコンテキストで記述されてよい。一般に、プログラムモジュールは、特定のタスクの実行または特定の抽象データ型の実施のためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを備える。本願は、分散型コンピュータ環境で実行されてもよい。かかる分散型コンピュータ環境では、通信ネットワークを介して接続されたリモート処理装置によって、タスクが実行される。分散型コンピュータ環境において、プログラムモジュールは、記憶装置を備えるローカルまたはリモートコンピュータの記憶媒体に格納されうる。
【００３５】
図１Ａは、複数レベルのキャッシュを利用するメールインデックス化システムの一実施形態を示すブロック図である。この例において、システム１５０は、１または複数のメールボックスサーバ１５２と、階層的に構成されたキャッシュ１５４〜１５８とを備える。メールボックスサーバ１５２は、ｅメールメッセージをインデックス化して、階層的に構成されたキャッシュにインデックス情報を格納する。３つのキャッシュレベルが、例示の目的で図示されているが、異なる数のキャッシュが他の実施形態で用いられてもよい。レベル１キャッシュは、サーバ１５２のランダムアクセスメモリ（ＲＡＭ）など、低待ち時間メモリを用いて実装される。レベル２キャッシュおよびレベル３キャッシュは、ハードディスクまたはその他の記憶デバイスなど、レベル１キャッシュの実装に用いる低待ち時間メモリよりも大きい待ち時間を有する１または複数のコンポーネントを用いて実装される。いくつかの実施形態において、メールに対して確立された転置インデックスレコードは、まず、レベル１キャッシュに保存される。レベル１キャッシュに格納されたデータが第１の所定の閾値に達すると、レベル１キャッシュ内のレベル１転置インデックスレコードはすべて、将来の転置インデックスレコードのための余地を確保するためにレベル２キャッシュファイルに転送される。レベル２キャッシュは、キャッシュファイルを格納する。レベル２キャッシュ内のデータ量が第２の所定の閾値に達すると、レベル２データは、転置インデックスファイルを格納するレベル３キャッシュに転送される。メールインデックスを確立するためのこの処理は、ハードディスクの読み書きの頻度を削減するため、ハードディスクの入力／出力（Ｉ／Ｏ）性能を向上させることができる。
【００３６】
図１Ｂは、メールインデックスを確立するための処理の一実施形態を示すフローチャートである。処理１００は、システム（１５０など）上で実行されてよい。
【００３７】
工程１０１で、ｅメールメッセージに関連するキーワードを取得するために、ｅメールメッセージが処理される。
【００３８】
いくつかの実施形態では、ｅメールメッセージのキーワードを取得するために、インデックスが確立されるｅメールメッセージに対して、単語分割が実行される。いくつかの実施形態において、インデックスは、ｅメールのテキストのみに対して確立されるため、単語分割は、ｅメールのテキストのみに適用される。いくつかの実施形態では、メッセージの件名も、インデックスを確立するための基礎となる必要があるため、単語分割は、メールキーワードを取得するために、メールのテキストおよびメールの件名の両方に適用される。当業者であれば、システムの具体的な要件に従って単語分割ツールを選択することにより、この工程を実現できる。
【００３９】
ユーザが新たなメールを受信するごとに、本願の実施形態に開示したメールインデックス確立方法が、その新たなメールに実施されてよいことがわかる。
【００４０】
工程１０２で、取得されたキーワードは、レベル１キャッシュに格納されたレベル１転置インデックスレコードを更新するための基礎として用いられる。
【００４１】
現在のメールが単語分割を受けた後、キーワードおよびメールメッセージの間の対応関係を確立する転置インデックスレコードが生成される。例えば、現在のメールの識別子が「ｄｏｃ５」であり、この現在のメールが２つのキーワード「ｋｅｙｗｏｒｄ１」および「ｋｅｙｗｏｒｄ５」を有すると仮定する。この例において、転置インデックスレコードは、以下に示すように生成される：
【００４２】
ｋｅｙｗｏｒｄ１：ｄｏｃ５
【００４３】
ｋｅｙｗｏｒｄ５：ｄｏｃ５
【００４４】
いくつかの実施形態において、レベル１キャッシュは、初期転置インデックスレコードを保存するために低待ち時間メモリ内に構成される。すなわち、現在のメールに対して最初に生成された転置インデックスレコードは、最初には、メモリ内のレベル１キャッシュだけに格納される。転置インデックスレコードは、キー／値ペアを含む。レベル１キャッシュ内の転置インデックスレコードの「キー」とは、様々なキーワードのことを指しており、「値」は、メールメッセージの識別子である。本実施形態のレベル１バッファの初期転置インデックスレコードが以下の通りであると仮定する：
【００４５】
ｋｅｙｗｏｒｄ１：ｄｏｃ１，ｄｏｃ２，ｄｏｃ３；
【００４６】
ｋｅｙｗｏｒｄ２：ｄｏｃ１，ｄｏｃ４
【００４７】
したがって、現在のメールから新たに生成された転置インデックスレコードは、レベル１キャッシュ内の転置インデックスレコードを更新するために、既存の転置インデックスレコードにマージされ、更新された転置インデックスレコードは、以下の通りになる：
【００４８】
ｋｅｙｗｏｒｄ１：ｄｏｃ１，ｄｏｃ２，ｄｏｃ３，ｄｏｃ５；
【００４９】
ｋｅｙｗｏｒｄ２：ｄｏｃ１，ｄｏｃ４；
【００５０】
ｋｅｙｗｏｒｄ５：ｄｏｃ５
【００５１】
工程１０３で、レベル１キャッシュ内のレベル１転置インデックスレコードのサイズが第１の所定の閾値を超えているか否かが判定される。超えている場合、制御は工程１０４に進み、そうでない場合、処理は終了する。
【００５２】
いくつかの実施形態では、少なくとも２つのキャッシュレベルが、Ｉ／Ｏ動作を実現するように構成される。レベル１キャッシュは低待ち時間メモリ内に構成され、データはメモリモード転置インデックスレコードとして記録される。レベル２キャッシュは、より高待ち時間のメモリまたは記憶コンポーネント（ハードディスクなど）を用いて構成される。新たなメールが転置インデックスレコードを取得するために処理されると、レコードは、レベル１キャッシュに書き込まれる。メモリ内のレベル１キャッシュが、第１の所定の閾値（例えば、２ＭＢ）に達すると、レベル１キャッシュ内の転置インデックスレコードはすべて、レベル２キャッシュ内のバッファファイルに書き込まれる。
【００５３】
レベル１キャッシュのサイズが第１の閾値に達していない場合、現在のメールメッセージの転置インデックスレコードは、レベル１キャッシュに書き込まれる。ユーザが次の検索を行った時に、現在のメールが検索条件に一致すると、現在のメールは、レベル１キャッシュ内で見つけられる。これで、現在のメールに対するインデックス確立処理は終了する。
【００５４】
工程１０４で、レベル１キャッシュ内のレベル１転置インデックスレコードすべてが、レベル２キャッシュに転送され、レベル２キャッシュファイルに格納される。いくつかの実施形態において、転送は、データを新たな位置にコピーした後に古い位置からデータを削除することとして実施される。転置インデックスレコードは、工程１０２で述べたように、既存の転置インデックスレコードにマージされる。
【００５５】
工程１０５で、現在のレベル２キャッシュファイルのサイズが第２の所定の閾値を超えるか否かが判定される。超えている場合、制御は工程１０６に進み、そうでない場合、処理は終了する。
【００５６】
本願の実施形態において、レベル２キャッシュファイルについての閾値サイズ（第２の所定の閾値）は、レベル１キャッシュ内のレベル１転置インデックスレコードが書き込まれた現在のレベル２キャッシュファイルが所定の閾値に達した時に、レベル２キャッシュファイル内のレベル２転置インデックスレコードすべてがレベル３転置インデックスファイルに書き込まれるように構成される。
【００５７】
この工程で、レベル２キャッシュファイルのサイズが第１の所定の閾値に達していない場合、現在のメールの転置インデックスレコードは、レベル２キャッシュに書き込まれる。すなわち、現在のメールの転置インデックスレコードは、レベル２キャッシュファイルに保存されている。ユーザが次の検索を行った時、現在のメールが検索条件に一致すると、現在のメールは、レベル２キャッシュファイル内で見つけられる。これで、現在のメールに対するインデックス確立処理は終了する。
【００５８】
レベル２キャッシュファイルは、以下の現象を避けるために用いられるバッファとして機能する：メモリ内のレベル１バッファが満杯になった後、レベル１バッファ内の転置インデックスレコードが様々なキーワードに属するレベル３転置インデックスファイルに直接書き込まれている時に、複数のレベル３転置インデックスファイルを同時に書き込むことが必要になる。例えば、メモリ内のレベル１キャッシュに１０個の転置インデックスレコードが存在し、これら１０個の転置インデックスレコード内の１０個のキーワードが５個のレベル３転置インデックスファイルに別個に属すると仮定する。この時点で、レベル１キャッシュ内の転置インデックスレコードがレベル３転置インデックスファイルに直接書き込まれる場合、書き込み動作は、５個のレベル３転置インデックスファイルで同時に実行される必要がある。レベル２キャッシュファイルがバッファファイルとして機能すると、これら１０個の転置インデックスレコードは、１つのレベル２キャッシュファイルに書き込まれるだけでよい。他の転置インデックスレコード（その一部は、同じ５個のレベル３転置インデックスファイルに最終的に書き込まれうる）の追加で、レベル２キャッシュファイルが特定の閾値（例えば、４ＭＢ）まで大きくなると、レベル２キャッシュファイル内のレベル２転置インデックスに対してワンタイム分類（ｏｎｅ−ｔｉｍｅ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ）が実行される。バッファファイル内の多くの他の転置インデックスレコードと共に１０個の転置インデックスレコードが、キーワードの属するレベル３転置インデックスファイルに書き込まれる。これは、ハードディスクへのファイル書き込みの頻度を大幅に削減する。
【００５９】
工程１０６で、レベル２キャッシュファイル内のレベル２転置インデックスレコードすべてが、パスファイルに従ってレベル３転置インデックスファイルに転送される。このパスファイルは、キーワードおよびレベル３転置インデックスファイルの間の対応関係を確立するマッピング関係を保存する。いくつかの実施形態において、パスファイルは、キーワードおよびレベル３転置インデックスファイルのマッピング関係（すなわち、どのキーワードが、どのレベル３転置インデックスファイルに保存されるのか）を記録するために生成されうる。パスファイルは、キーワードからレベル３転置インデックスファイルへのマッピング関係を記録する。パスファイル内のレコードの例は、以下の通りである：
【００６０】
ｋｅｙｗｏｒｄ１〜ｋｅｙｗｏｒｄ３：／ｘｘ／ｌｅｖｅ＿３＿ｉｎｖｅｒｔｅｄ＿ｉｎｄｅｘ＿ｆｉｌｅ＿ｎａｍｅ＿１
【００６１】
ｋｅｙｗｏｒｄ２〜．ｋｅｙｗｏｒｄｘ：／ｘｘ／ｌｅｖｅ＿３＿ｉｎｖｅｒｔｅｄ＿ｉｎｄｅｘ＿ｆｉｌｅ＿ｎａｍｅ＿２
【００６２】
・・・
【００６３】
ｋｅｙｗｏｒｄｎ〜ｋｅｙｗｏｒｄｍ：／ｘｘ／ｌｅｖｅ＿３＿ｉｎｖｅｒｔｅｄ＿ｉｎｄｅｘ＿ｆｉｌｅ＿ｎａｍｅ＿ｎ
【００６４】
キーワードは、異なるデポジットファイルにアルファベット順に格納されてよい。一例では、ｋｅｙｗｏｒｄ１が「ａｂａｃｕｓ」、ｋｅｙｗｏｒｄ３が「ａｚｕｒｅ」、ｋｅｙｗｏｒｄ２が「ｂａｃｋ」、ｋｅｙｗｏｒｄｘが「ｂｕｔｔｅｒ」、などである。その他の構成も可能である。パスファイルが構成された後、パスファイルに記録されたマッピング関係から、キーワードが位置するレベル３転置インデックスファイルを見つけることが、後のメールボックス検索において可能になる。次いで、システムは、レベル３転置インデックスファイルをフェッチした後、どのメールがキーワードを含むのかを判定できる。したがって、パスファイルは、キーワードからレベル３転置インデックスファイルへのパスを定義する。
【００６５】
図２は、レベル２転置インデックスレコードをレベル３キャッシュに転送するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理２００は、処理１００の工程１０６を実施する。
【００６６】
工程２０１で、レベル２キャッシュファイル内のレベル２転置インデックスレコードすべてが、メモリに転送される（例えば、ディスク格納位置からメモリに読み出される）。
【００６７】
工程２０２で、パスファイルに少なくとも部分的に基づいて、レベル２転置インデックスレコード内のキーワードに対応するレベル３転置インデックスファイルが決定される。上述のように、パスファイルは、キーワードおよびそれぞれのレベル３転置インデックスファイルに関連するパスを含む。パスは、レベル２転置インデックスレコード内のキーワードに対応するレベル３転置インデックスファイルの決定に用いられる。
【００６８】
工程２０３で、レベル２転置インデックスレコードは、キーワードに従って、決定されたレベル３転置インデックスファイルに書き込まれる。
【００６９】
いくつかの実施形態において、書き込み速度は、レベル３転置インデックスファイルに書き込み動作を実行するためにアペンドモードを用いることによって上げられる。したがって、いくつかの実施形態において、レベル２転置インデックスレコードがレベル３転置インデックスファイルに書き込まれる時、レベル２キャッシュファイル内の転置インデックスレコードはすべて、キーワードに従って、決定されたレベル３転置インデックスファイルにアペンドモードでフェッチされる。アペンドモードは、ファイルの編集に用いられる標準的なモードである。アペンドモードでは、新たなデータがファイルの最後に直接追加される。
【００７０】
閾値を超えた時、システムはパスファイルをフェッチする。この時点で、システムは、バッファファイルの転置レコードをスキャンし、各レコードのキーワード（例えば、ｋｅｙｗｏｒｄ１）をフェッチする。次いで、パスファイル情報を用いて、ｋｅｙｗｏｒｄ１レコードがどの転置ファイルに配置されるべきかを学習し、その後、そのファイルにレコードを追加する。
【００７１】
本願の実施形態は、レベル１キャッシュ、レベル２キャッシュファイル、および、レベル３転置インデックスファイルを含むアプローチを用いる。メールメッセージに対して確立された転置インデックスレコードは、まず、レベル１キャッシュに保存される；レベル１キャッシュが第１の所定の閾値に達すると、レベル１キャッシュ内のレベル１転置インデックスレコードはすべて、レベル２キャッシュファイルに転送される；レベル２キャッシュファイルが第２の所定の閾値に達すると、それらのファイル内のレベル２転置インデックスレコードは、レベル３転置インデックスファイルに転送される。このアプローチは、システムが、メールのための多数の転置インデックスレコードを有することによるハードディスクへの過剰な回数の書き込み動作を避けることを可能にする。その結果、メールインデックスを確立する処理における転置インデックスレコード書き込み速度が上昇する。これは、メールインデックス確立の速度を上昇させるだけでなく、ディスクへの過剰な回数の書き込み動作からの影響を削減し、ディスクＩＯ性能を向上させる。
【００７２】
さらに、本願の実施形態におけるメールインデックスの一部は、低待ち時間メモリを用いて実装されるレベル１キャッシュ内に保存される。結果として、ハードディスクは、メールインデックス全体を格納しない。したがって、新たなメールが頻繁に処理された場合に、メモリ内のバッファは、そのメールがディスク書き込みへ過剰な影響を与えることを防ぐ。さらに、最も新しいデータに対する速度を高めることにより、リアルタイム検索の目的を達成できる。
【００７３】
図３は、メールインデックスを確立するための処理の別の実施形態を示すフローチャートである。いくつかの実施形態において、処理３００は、処理１００が完了した後に実行される。
【００７４】
この例では、さらに、第３の所定の閾値がレベル３転置インデックスファイルのために確立され；レベル３転置インデックスファイルのサイズが第３の所定の閾値に達すると、そのファイルは、複数（例えば、２つ）の転置インデックスサブファイルに分割され、これらの転置インデックスサブファイルは、第３の所定の閾値以下の大きさでなければならない。このように、各レベル３転置インデックスファイルが、過度に大きくならないことを保証し、したがって、メールインデックスに対するアクセス速度を保証することができる。
【００７５】
工程３０１で、レベル３転置インデックスファイルのサイズが第３の所定の閾値を超えるか否かが判定される。超える場合、制御は工程３０２に進む。レベル３転置インデックスファイルのための閾値は、レベル２キャッシュファイルのための第２の所定の閾値と同じであってもよいし、異なる値であってもよい。
【００７６】
この例において、レベル１キャッシュ、レベル２キャッシュファイル、および、レベル３転置インデックスファイルのための閾値の大きさの構成は、特定の期間内のディスクへの読み書き動作の回数、および、ユーザがメール検索を行った時にユーザ検索結果を返すためにどれだけの時間が割り当てられるのか、などの要素を考慮する。ファイルが小さいほど、読み書き速度は速くなる。ただし、キャッシュサイズが非常に小さいと、ファイルの数が過剰になり、読み書き速度が遅くなる。したがって、閾値の大きさは、実際の条件に合わせて経験的に調整される。
【００７７】
現在の工程において、レベル３転置インデックスファイルのサイズが第３の所定の閾値（例えば、４ＭＢ）に達しない場合、後の工程は実行されない。
【００７８】
工程３０２で、レベル３転置インデックスファイルは、複数（例えば、２つ）の転置インデックスサブファイルに分割される。
【００７９】
レベル３転置インデックスファイルが大きすぎる場合、レベル３転置インデックスファイルは、キーワードに基づいて分割できる。ファイルは、キーワードの粒度に従って分割される。すなわち、１つのキーワードに対応する転置インデックスレコードが、１つだけの転置インデックスサブファイルになる。したがって、その後に、１つのキーワードに関連するメールに関してクエリが行われると、１つのレベル３転置インデックスファイルだけがフェッチされる。さらに、このレベル３転置インデックスファイルは、閾値サイズ（例えば、４ＭＢ）を超えないので、メールインデックスが迅速にフェッチされることを保証する。一例は以下の通りである：
【００８０】
ｋｅｙｗｏｒｄ１：ｄｏｃ１，ｄｏｃ２，ｄｏｃ３．．．
【００８１】
ｋｅｙｗｏｒｄ２：ｄｏｃ１，ｄｏｃ３，ｄｏｃ４．．．
【００８２】
ｋｅｙｗｏｒｄ３：ｄｏｃ１，ｄｏｃ６．．．
【００８３】
・・・
【００８４】
ｋｅｙｗｏｒｄｎ：ｄｏｃ１，ｄｏｃｋ．．．
【００８５】
このファイルが大きすぎる場合、レコードエントリの境界で複数（例えば、２つ）の転置インデックスサブファイルに分割される。
【００８６】
いくつかの実施形態において、レベル３転置インデックスファイルが２つの転置インデックスサブファイルに分割される時、２つの要素を考慮する必要がある。一つ目は、１つのキーワードに対応する転置インデックスレコードが１つの転置インデックスサブファイル内に確実に存在することを保証するためのキーワード粒度である。二つ目は、２つの転置インデックスサブファイルが互いにできるだけ近いサイズであることが好ましいという事実を考慮する必要性である。このように、その後のサブファイルの分割の頻度が最小化される。
【００８７】
工程３０３で、パスファイルは、分割済みの転置インデックスサブファイルに従って更新される。
【００８８】
第３の所定の閾値を超えるレベル３転置インデックスファイルは、自身の識別子をそれぞれ持つ２つの転置インデックスサブファイルに分割されるので、元々のレベル３転置インデックスファイル内の様々なキーワードに対応する転置インデックスレコードは変化する。したがって、パスファイルは、分割済みの転置インデックスサブファイルに従って更新される必要がある。パスファイルが更新された後、元々のレベル３転置インデックスファイルは削除されてよい。
【００８９】
図４は、メールインデックスを確立するための処理の別の実施形態を示すフローチャートである。いくつかの実施形態において、処理４００は、処理１００が完了した後に実行される。この例において、レベル３転置インデックスファイルは、２つの部分すなわち初期静的圧縮ファイル（例えば、ｚｉｐファイル）および増分ファイルを有するよう構成されており、初期静的圧縮ファイルは、圧縮された転置インデックスレコードを保存し、増分ファイルは、圧縮されていない転置インデックスレコードを保存する。本実施形態において、転置インデックスレコードが新たなメールのために生成されると、これらの新たに生成された転置インデックスレコードは、増分ファイルに書き込まれてよい。結果として、メールインデックスをより迅速に確立し、過度の頻繁なディスク書き込みによる影響を低減できる。ディスクのＩＯ性能を向上させ、レベル３転置インデックスファイルのための格納リソースをさらに節約することができる。
【００９０】
上述のように、処理１００の最後に、レベル２転置インデックスレコードは、キーワードおよび対応するレベル３転置インデックスファイルのマッピング関係情報を指定するパスファイルに従ってレベル３転置インデックスファイルの中から決定された増分ファイルに転送される。処理１００に続いて、工程４０９で、増分ファイルが増分閾値を超えるか否かが判定される。超える場合、制御は工程４１０に進む。
【００９１】
本実施形態では、閾値が、増分ファイルに対して構成される。例えば、増分ファイルは、４ＭＢの閾値以下であることが好ましい。増分ファイルが所定の閾値に達すると、増分ファイルに保存された内容は、レベル３転置インデックスファイルのサイズと、そのファイルが占有するハードディスクスペースの量とを削減するために圧縮される。この工程において、増分ファイルが増分閾値を超えない場合、後の工程は実行されない。
【００９２】
工程４１０で、初期静的圧縮ファイルは、解凍済みの初期静的ファイルを取得するために解凍される。いくつかの実施形態において、増分ファイルのサイズが増分閾値を超えた場合、まず、初期静的圧縮ファイルの内容がフェッチされ、圧縮されていない初期静的ファイルを取得するために解凍される。
【００９３】
工程４１１で、解凍済みの初期静的ファイルおよび増分ファイルは、マージファイルを取得するためにマージされる。
【００９４】
工程４１２で、マージファイルは、現行の静的圧縮ファイル（例えば、ｚｉｐファイル）を生成するために、任意の適切な技術を用いて圧縮される。いくつかの実施形態において、マージファイルが現行の静的圧縮ファイルを生成するために圧縮されると、増分ファイルは、その元々の内容から解放される。このことすべての目的は、圧縮技術を用いてレベル３転置インデックスファイルに対するストレージコストを下げることであるが、同時に、頻繁なデータ書き込みに伴って起きる圧縮および解凍から生じる計算およびディスク書き込みのコストを削減することである。
【００９５】
図５は、メール検索処理の一実施形態を示すフローチャートである。処理５００は、処理１００などの処理を用いてメールインデックスが確立された後に実行される。
【００９６】
ユーザがメールを検索する時、最初の工程は、検索されるキーワードをユーザから受信することである。工程５０１で、ユーザによって送信された検索キーワードが取得される。
【００９７】
工程５０２で、パスファイルに従って、キーワードに対応するレベル３転置インデックスファイルが決定される。上述のように、このパスファイルは、キーワードおよびレベル３転置インデックスファイルの間の対応関係を確立するマッピング関係を保存する。
【００９８】
工程５０３で、キーワードを含む第１のメールセットが、レベル３転置インデックスファイルに基づいて決定される。
【００９９】
レベル３転置インデックスファイルは、パスファイルに従って決定され、検索されるキーワードを含む。いくつかの実施形態では、次に、レベル３転置インデックスファイルは、検索を容易にするために、メモリ内のバイナリツリーデータ構造にロードされる。バイナリツリーデータ構造は、検索されるキーワードを含むメールメッセージを見つけるために検索される。このセットのメールメッセージは、第１のメールセットとして見なされる。
【０１００】
工程５０４で、キーワードを含む第２のメールセットが、レベル１キャッシュに基づいて決定される。
【０１０１】
一部の例では、レベル１キャッシュは、キーワードを含むいくつかのメールを有しうる。キャッシュ内のこれらのメールが第１の所定の閾値にまだ達していなければ、それらは、レベル２キャッシュファイルにフェッチされていない。したがって、レベル１キャッシュで検索して、これらのメールを見つける必要があり、それらのメールは第２のメールセットを形成する。
【０１０２】
工程５０５で、キーワードを含む第３のメールセットが、レベル２キャッシュファイルに基づいて決定される。
【０１０３】
一部の例では、レベル２キャッシュファイルは、キーワードを含むいくつかのメールを有しうる。レベル２キャッシュファイル内のこのメールが第２の所定の閾値にまだ達していなければ、そのメールは、レベル３転置インデックスファイルにフェッチされていない。したがって、レベル２キャッシュファイルで検索して、これらのメールを見つける必要があり、それらのメールは第３のメールセットを形成する。
【０１０４】
工程５０６で、第１のメールセット、第２のメールセット、および、第３のメールセットは、検索結果を得るためにマージされる。
【０１０５】
最後に、別個に見つけられた後にマージされた、第１のメールセット、第２のメールセット、および、第３のメールセットの和が、ユーザの現在のキーワードに対する検索結果となる。工程は他の順序で配列されてもよく、例えば、代替例として、第１、第２、および、第３のメールセットが、それぞれ、レベル１キャッシュ、レベル２キャッシュ、および、レベル３キャッシュからのメールメッセージに対応するものとしてもよいことに注意されたい。
【０１０６】
本実施形態におけるメール検索中、メールは、レベル１キャッシュ、レベル２キャッシュファイル、および、レベル３転置インデックスファイル内でユーザの検索キーワードに従って検索される。さらに、レベル１キャッシュ、レベル２キャッシュファイル、および、レベル３転置インデックスファイルのサイズは、それぞれの所定の閾値を超えない。したがって、これらの３つに対して、別個の検索を実行することで、ハードディスクの読み書き頻度を削減し、メール検索速度を上昇させ、ハードディスクＩＯ性能も向上させることができる。
【０１０７】
図６は、メールインデックスを確立するよう構成されたシステムの一実施形態を示すブロック図である。システムは、処理１００などの処理を実行するよう構成されており、以下を備える：
【０１０８】
メールに単語分割を実行して、そのメールのキーワードを取得するよう構成された単語分割ユニット６０１。
【０１０９】
レベル１キャッシュに保存されたレベル１転置インデックスレコードを更新するための基礎として、現在のメールのキーワードを用いるよう構成されたレベル１キャッシュ更新ユニット６０２。
【０１１０】
レベル１キャッシュ内のレベル１転置インデックスレコードのサイズが第１の所定の閾値を超えているか否かを判定するよう構成された第１の判定ユニット６０３。
【０１１１】
第１の判定ユニットの結果が肯定であった場合に、レベル１キャッシュ内のレベル１転置インデックスレコードすべてをレベル２キャッシュファイルに転送するよう構成された第１の転送ユニット６０４。
【０１１２】
現在のレベル２キャッシュファイルのサイズが第２の所定の閾値を超えているか否かを判定するよう構成された第２の判定ユニット６０５。
【０１１３】
第２の判定ユニットの結果が肯定であった場合に、キーワードおよびレベル３転置インデックスファイルのマッピング関係情報を格納するパスファイルに従って、レベル２キャッシュファイル内のレベル２転置インデックスレコードすべてをレベル３転置インデックスファイルに転送するよう構成された第２の転送ユニット６０６。
【０１１４】
図７は、転送ユニットの一実施形態を示すブロック図である。この例において、システム７００は、図６の第２の転送ユニット６０６を実装するために用いられており、以下を備える：
【０１１５】
レベル２キャッシュファイル内のレベル２転置インデックスレコードすべてをメモリにフェッチ（すなわち、転送）するよう構成された第１のフェッチモジュール７０１。
【０１１６】
レベル２転置インデックスレコード内のキーワードに対応するレベル３転置インデックスファイルを決定する基礎としてパスファイルを用いるよう構成された決定モジュール７０２。
【０１１７】
キーワードに従って、決定されたレベル３転置インデックスファイルにレベル２転置インデックスレコードをフェッチ（転送）するよう構成された第２のフェッチモジュール７０３。いくつかの実施形態において、第２のフェッチモジュール７０３は、特に、キーワードに従って、決定されたレベル３転置インデックスファイルにレベル２キャッシュファイル内の転置インデックスレコードすべてをアペンドモードでフェッチするよう構成される。
【０１１８】
図８は、メールインデックスを確立するよう構成されたシステムのブロック図である。この例において、システム８００は、図６の６００と同様のインデックス確立ユニットに加えて、以下を備える：
【０１１９】
レベル３転置インデックスファイルのサイズが第３の所定の閾値を超えているか否かを判定するよう構成された第３の判定ユニット８０１。
【０１２０】
第３の判定ユニットの結果が肯定であった場合に、レベル３転置インデックスファイルを２つの転置インデックスサブファイルに分割するよう構成された分割ユニット８０２。
【０１２１】
２つの分割された転置インデックスサブファイルに従ってパスファイルを更新するよう構成されたパスファイル更新ユニット８０３。
【０１２２】
図９は、メールインデックスを確立するよう構成されたシステムの別の実施形態を示すブロック図である。システム９００は、以下を備える：
【０１２３】
メールメッセージに単語分割を実行して、そのメールメッセージのキーワードを取得するよう構成された単語分割ユニット６０１。
【０１２４】
レベル１キャッシュに保存されたレベル１転置インデックスレコードを更新するための基礎として、メールメッセージのキーワードを用いるよう構成されたレベル１キャッシュ更新ユニット６０２。
【０１２５】
レベル１キャッシュ内のレベル１転置インデックスレコードのサイズが第１の所定の閾値を超えているか否かを判定するよう構成された第１の判定ユニット６０３。
【０１２６】
第１の判定ユニットの結果が肯定であった場合に、レベル１キャッシュ内のレベル１転置インデックスレコードすべてをレベル２キャッシュファイルに転送するよう構成された第１の転送ユニット６０４。
【０１２７】
現在のレベル２キャッシュファイルのサイズが第２の所定の閾値を超えているか否かを判定するよう構成された第２の判定ユニット６０５。
【０１２８】
レベル２キャッシュファイル内のレベル２転置インデックスレコードすべてをメモリにフェッチするよう構成された第１のフェッチモジュール７０１。
【０１２９】
レベル２転置インデックスレコード内のキーワードに対応するレベル３転置インデックスファイルを決定するためにパスファイルを用いる決定モジュール７０２。いくつかの実施形態において、レベル３転置インデックスファイルは、初期静的圧縮ファイルおよび増分ファイルを含む。
【０１３０】
キーワードに従って、レベル２転置インデックスレコードを増分ファイルにフェッチするよう構成された第２のフェッチモジュール７０３。
【０１３１】
増分ファイルが増分閾値を超えているか否かを判定するよう構成された第４の判定ユニット９０１。
【０１３２】
第４の判定ユニットの結果が肯定であった場合に、解凍済みの初期静的ファイルを取得するために、初期静的圧縮ファイルを解凍するよう構成された解凍ユニット９０２。
【０１３３】
マージファイルを取得するために、初期静的ファイルおよび増分ファイルをマージするよう構成されたマージユニット９０３。
【０１３４】
現在の静的圧縮ファイルを生成するために、マージファイルを圧縮するよう構成された圧縮ユニット９０４。
【０１３５】
本実施形態において、レベル３転置インデックスファイルは、圧縮初期静的ファイルとしてまたは増分ファイルとして分類される。したがって、メールインデックスをより迅速に確立し、過度の頻繁なディスク書き込みによる影響を低減できる。ディスクのＩＯ性能を向上させ、レベル３転置インデックスファイルのための格納リソースをさらに節約することができる。
【０１３６】
図１０は、メール検索システムの一実施形態を示すブロック図である。メール検索システム１０００は、上述のメールインデックス確立システムと協働するものであり、以下を備える：
【０１３７】
ユーザによって送信された検索キーワードを取得するよう構成されたキーワード取得ユニット１００１。
【０１３８】
キーワードとレベル３転置インデックスファイルとの間の対応関係を確立するマッピング関係を保存するパスファイルに従って、キーワードに対応するレベル３転置インデックスファイルを決定するよう構成された決定ユニット１００２。
【０１３９】
レベル３転置インデックスファイルから、キーワードが位置する第１のメールセットを決定するよう構成された第１のメールセット決定ユニット１００３。
【０１４０】
レベル１キャッシュから、キーワードが位置する第２のメールセットを決定するよう構成された第２のメールセット決定ユニット１００４。
【０１４１】
レベル２キャッシュファイルから、キーワードが位置する第３のメールセットを決定するよう構成された第３のメールセット決定ユニット１００５。
【０１４２】
検索結果を取得するために、第１のメールセット、第２のメールセット、および、第３のメールセットをマージするよう構成された検索結果取得ユニット１００６。
【０１４３】
本実施形態におけるメール検索中、メールは、レベル１キャッシュ、レベル２キャッシュファイル、および、レベル３転置インデックスファイル内でユーザの検索キーワードに従って検索される。さらに、レベル１キャッシュ、レベル２キャッシュファイル、および、レベル３転置インデックスファイルのサイズは、それぞれの所定の閾値を超えない。したがって、これらの３つに対して、別個の検索を実行することで、ハードディスクの読み書き頻度を削減し、メール検索速度を上昇させ、ハードディスクＩＯ性能も向上させることができる。
【０１４４】
上述のモジュール／ユニットは、１または複数のプロセッサ上で実行されるソフトウェアコンポーネントとして、特定の機能を実行するよう設計されたプログラム可能論理デバイスおよび／または特定用途向け集積回路などのハードウェアとして、もしくは、それらの組み合わせとして実装することができる。いくつかの実施形態において、モジュール／ユニットは、コンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワーク装置など）に本願の実施形態に記載された方法を実行させるための複数の命令など、不揮発性記憶媒体（光学ディスク、フラッシュ記憶装置、携帯用ハードディスクなど）に格納することができるソフトウェア製品の形態で具現化されてよい。モジュール／ユニットは、単一のデバイス上に実装されてもよいし、複数のデバイスにわたって分散されてもよい。モジュール／ユニットの機能は、互いに統合されてもよいし、複数のサブモジュール／サブユニットにさらに分割されてもよい。
【０１４５】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
【０１４６】
［適用例１］
電子メールメッセージ処理のための方法であって、
電子メールメッセージに関連する１セットのキーワードを取得する工程と、
１または複数のコンピュータプロセッサを用いて、前記１セットのキーワードに少なくとも部分的に基づいて、レベル１キャッシュに格納された１セットの転置インデックスレコードを更新する工程と、
前記レベル１キャッシュに格納された前記１セットの転置インデックスレコードのサイズが第１の所定の閾値を超えたか否かを判定する工程と、
前記第１の所定の閾値を超えた場合に、前記レベル１キャッシュ内の前記１セットの転置インデックスレコードをレベル２キャッシュに転送する工程と、
レベル２キャッシュファイルのサイズが第２の所定の閾値を超えたか否かを判定する工程と、
前記第２の所定の閾値を超えた場合に、前記キーワードと、対応するレベル３転置インデックスファイルとのマッピング関係情報を格納するパスファイルに従って、１セットの転置インデックスファイルを格納するレベル３キャッシュに前記レベル２キャッシュファイル内の転置インデックスレコードを転送する工程と、
を備える、方法。
［適用例２］
適用例１に記載の方法であって、さらに、
レベル３転置インデックスファイルのサイズが第３の所定の閾値を超えたか否かを判定する工程と、
前記レベル３転置インデックスファイルの前記サイズが前記第３の所定の閾値を超えた場合に、前記レベル３転置インデックスファイルを２つの転置インデックスサブファイルに分割する工程と、
前記２つの分割された転置インデックスサブファイルに従って、前記パスファイルを更新する工程と、
を備える、方法。
［適用例３］
適用例１に記載の方法であって、前記レベル２キャッシュファイル内の前記転置インデックスレコードをレベル３転置インデックスファイルに転送する工程は、
前記レベル２キャッシュファイル内の前記レベル２転置インデックスレコードをメモリにフェッチする工程と、
前記パスファイルに基づいて、前記レベル２転置インデックスレコード内のキーワードに対応する前記レベル３転置インデックスファイルを決定する工程と、
前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２転置インデックスレコードを転送する工程と、
を含む、方法。
［適用例４］
適用例３に記載の方法であって、前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送する工程は、アペンドモードで実行される、方法。
［適用例５］
適用例３に記載の方法であって、１つのレベル３転置インデックスファイルが、初期静的圧縮ファイルおよび増分ファイルを備える、方法。
［適用例６］
適用例５に記載の方法であって、前記キーワードに従って、前記レベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送する工程は、
前記キーワードに従って、前記増分ファイルに前記レベル２転置インデックスレコードを転送する工程と、
前記増分ファイルが増分閾値を超えたか否かを判定する工程と、
前記増分閾値を超えた場合に、前記初期静的圧縮ファイルを解凍して、解凍済みの初期静的ファイルを取得する工程と、
前記解凍済みの初期静的ファイルおよび前記増分ファイルをマージして、マージファイルを取得する工程と、
前記マージファイルを圧縮して、現行の静的圧縮を生成する工程と、
を含む、方法。
［適用例７］
適用例１に記載の方法であって、さらに、
ユーザによって送信された１または複数の検索キーワードのセットを取得する工程と、
前記パスファイルに従って、前記ユーザによって送信された前記検索キーワードに対応するレベル３転置インデックスファイルを決定する工程と、
前記レベル３転置インデックスファイルに基づいて、前記検索キーワードを含む第１のメールセットを、前記レベル１キャッシュに基づいて、前記検索キーワードを含む第２のメールセットを、そして、前記レベル２キャッシュファイルに基づいて、前記検索キーワードを含む第３のメールセットを決定する工程と、
前記第１のメールセット、第２のメールセット、および、第３のメールセットをマージして、検索結果を得る工程と、
を備える、方法。
［適用例８］
電子メールメッセージを処理するためのシステムであって、
１または複数のプロセッサであって、
電子メールメッセージに関連する１セットのキーワードを取得し、
前記１セットのキーワードに少なくとも部分的に基づいて、レベル１キャッシュに格納された１セットの転置インデックスレコードを更新し、
前記レベル１キャッシュに格納された前記１セットの転置インデックスレコードのサイズが第１の所定の閾値を超えたか否かを判定し、
前記第１の所定の閾値を超えた場合に、前記レベル１キャッシュ内の前記１セットの転置インデックスレコードをレベル２キャッシュに転送し、
レベル２キャッシュファイルのサイズが第２の所定の閾値を超えたか否かを判定し、
前記第２の所定の閾値を超えた場合に、前記キーワードと、対応するレベル３転置インデックスファイルとのマッピング関係情報を格納するパスファイルに従って、１セットの転置インデックスファイルを格納するレベル３キャッシュに前記レベル２キャッシュファイル内の転置インデックスレコードを転送するよう構成された、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するよう構成された１または複数のメモリと、
を備える、システム。
［適用例９］
適用例８に記載のシステムであって、前記１または複数のプロセッサは、さらに、
レベル３転置インデックスファイルのサイズが第３の所定の閾値を超えたか否かを判定し、
前記レベル３転置インデックスファイルの前記サイズが前記第３の所定の閾値を超えた場合に、前記レベル３転置インデックスファイルを２つの転置インデックスサブファイルに分割し、
前記２つの分割された転置インデックスサブファイルに従って、前記パスファイルを更新するよう構成されている、システム。
［適用例１０］
適用例８に記載のシステムであって、前記レベル２キャッシュファイル内の前記転置インデックスレコードをレベル３転置インデックスファイルに転送することは、
前記レベル２キャッシュファイル内の前記レベル２転置インデックスレコードをメモリにフェッチし、
前記パスファイルに基づいて、前記レベル２転置インデックスレコード内のキーワードに対応する前記レベル３転置インデックスファイルを決定し、
前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２転置インデックスレコードを転送することを含む、システム。
［適用例１１］
適用例１０に記載のシステムであって、前記キーワードに従って、前記決定されたレベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送することは、アペンドモードで実行される、システム。
［適用例１２］
適用例１０に記載のシステムであって、１つのレベル３転置インデックスファイルが、初期静的圧縮ファイルおよび増分ファイルを備える、システム。
［適用例１３］
適用例１２に記載のシステムであって、前記キーワードに従って、前記レベル３転置インデックスファイルに前記レベル２キャッシュファイル内の前記転置インデックスレコードを転送することは、
前記キーワードに従って、前記増分ファイルに前記レベル２転置インデックスレコードを転送し、
前記増分ファイルが増分閾値を超えたか否かを判定し、
前記増分閾値を超えた場合に、前記初期静的圧縮ファイルを解凍して、解凍済みの初期静的ファイルを取得し、
前記解凍済みの初期静的ファイルおよび前記増分ファイルをマージして、マージファイルを取得し、
前記マージファイルを圧縮して、現行の静的圧縮を生成することを含む、システム。
［適用例１４］
適用例８に記載のシステムであって、前記１または複数のプロセッサは、さらに、
ユーザによって送信された１または複数の検索キーワードのセットを取得し、
前記パスファイルに従って、前記ユーザによって送信された前記検索キーワードに対応するレベル３転置インデックスファイルを決定し、
前記レベル３転置インデックスファイルに基づいて、前記検索キーワードを含む第１のメールセットを、前記レベル１キャッシュに基づいて、前記検索キーワードを含む第２のメールセットを、そして、前記レベル２キャッシュファイルに基づいて、前記検索キーワードを含む第３のメールセットを決定し、
前記第１のメールセット、第２のメールセット、および、第３のメールセットをマージして、検索結果を得るよう構成されている、システム。
［適用例１５］
電子メールメッセージ処理のためのコンピュータプログラム製品であって、有形のコンピュータ読み取り可能記憶媒体内に具現化され、
電子メールメッセージに関連する１セットのキーワードを取得するためのコンピュータ命令と、
前記１セットのキーワードに少なくとも部分的に基づいて、レベル１キャッシュに格納された１セットの転置インデックスレコードを更新するためのコンピュータ命令と、
前記レベル１キャッシュに格納された前記１セットの転置インデックスレコードのサイズが第１の所定の閾値を超えたか否かを判定するためのコンピュータ命令と、
前記第１の所定の閾値を超えた場合に、前記レベル１キャッシュ内の前記１セットの転置インデックスレコードをレベル２キャッシュに転送するためのコンピュータ命令と、
レベル２キャッシュファイルのサイズが第２の所定の閾値を超えたか否かを判定するためのコンピュータ命令と、
前記第２の所定の閾値を超えた場合に、前記キーワードと、対応するレベル３転置インデックスファイルとのマッピング関係情報を格納するパスファイルに従って、１セットの転置インデックスファイルを格納するレベル３キャッシュに前記レベル２キャッシュファイル内の転置インデックスレコードを転送するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。
【図１Ａ】
0006050503.tif 000002
【図１Ｂ】
0006050503.tif 000003
【図２】
0006050503.tif 000004
【図３】
0006050503.tif 000005
【図４】
0006050503.tif 000006
【図５】
0006050503.tif 000007
【図６】
0006050503.tif 000008
【図７】
0006050503.tif 000009
【図８】
0006050503.tif 000010
【図９】
0006050503.tif 000011
【図１０】
0006050503.tif 000012