(57)【要約】  クライアントから受け取られたサーチ用語を有するサーチ問合せに応答して、現在言語ロケールが決定される。この現在言語ロケールに基づいてステートマシンが構築され、このステートマシンは、サーチ用語の同じ意味を有するサーチ用語の変化を表わすために１つ以上のノードを含む。ステートマシンの各ノードは、ステートマシンの各ノードに対応する反転型インデックスの１つ以上のポスティングリストを識別するように横断される。１つ以上のポスティングリストから得られた１つ以上のアイテム識別子は、クライアントへ返送され、そこで、アイテム識別子は、ステートマシンによって表わされるサーチ用語の変化を含む１つ以上のファイルを識別する。【選択図】図５
2013544393.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実行されるインデックス方法であって、
クライアントから受信したサーチ用語を有するサーチ問合せに応答して、現在言語ロケールを決定する処理と、
前記現在言語ロケールに基づいて前記サーチ用語の同じ意味を有する前記サーチ用語の変化を表わすために複数のノードを有するステートマシンを動的に構築する処理と、
前記ステートマシンの各ノードに対応する反転型インデックスの１つ以上のポスティングリストを識別するように前記ステートマシンの各ノードを横断する処理と、
前記１つ以上のポスティングリストから得た１つ以上のアイテム識別子を前記クライアントへ返送する処理であって、前記アイテム識別子は、前記ステートマシンにより表わされる前記サーチ用語の変化を含む１つ以上のファイルを識別するものである当該処理と、
が実行される方法。
【請求項２】
複数の言語ロケールからの１つ以上のキャラクタを有する複数の用語に対して前記反転型インデックスを維持する処理を更に含み、各用語は、対応する用語を含む１つ以上のファイルを識別するアイテム識別子を有するポスティングリストに対応する、請求項１に記載の方法。
【請求項３】
前記ステートマシンの各々のノードは、前記決定された言語ロケールのもとで前記サーチ用語の対応するキャラクタの同じ意味を有するキャラクタを表わす、請求項１に記載の方法。
【請求項４】
前記ステートマシンの各ノードは、異なる言語ロケールにおいて同じ意味を有する異なるキャラクタの変化の照合（コレーション）を表わすコレーションキー（collation key）に関連付けられる、請求項１に記載の方法。
【請求項５】
前記コレーションキーは、異なる言語ロケールにおける各々のキャラクタを表わすインターナショナル・コンポーネント・ユニコード（ＩＣＵ）から導出される、請求項４に記載の方法。
【請求項６】
前記ステートマシンを横断する処理は、
前記ステートマシンの各ノードの第１コレーションキーを前記サーチ用語の対応するキャラクタの第２コレーションキーに対してマッチングさせること、及び
前記第２コレーションキーにマッチングしないコレーションキーを有するキャラクタ候補を前記ステートマシンから除去すること、
を含む請求項４に記載の方法。
【請求項７】
前記反転型インデックスの用語は、トライアーキテクチャーに記憶され、前記ステートマシンの各ノードを横断して、前記トライアーキテクチャーの対応するノードを探索し、それに対応するポスティングリストを識別する、請求項１に記載の方法。
【請求項８】
コンピュータにインデックス方法を遂行するようにさせるインストラクションを記憶したコンピュータ読み取り可能な記憶媒体であって、前記コンピュータに、
クライアントから受け取られたサーチ用語を有するサーチ問合せに応答して、現在言語ロケールを決定し、
前記現在言語ロケールに基づいて前記サーチ用語の同じ意味を有する前記サーチ用語の変化を表わすために複数のノードを有するステートマシンを動的に構築し、
前記ステートマシンの各ノードに対応する反転型インデックスの１つ以上のポスティングリストを識別するように前記ステートマシンの各ノードを横断し、
前記１つ以上のポスティングリストから得た１つ以上のアイテム識別子を前記クライアントへ返送し、前記アイテム識別子は、前記ステートマシンにより表わされる前記サーチ用語の変化を含む１つ以上のファイルを識別する、
ことを実行させるプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項９】
更に、複数の言語ロケールからの１つ以上のキャラクタを有する複数の用語に対して前記反転型インデックスを維持することを実行させるプログラムを含み、
前記各用語は、対応する用語を含む１つ以上のファイルを識別するアイテム識別子を有するポスティングリストに対応するものである、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１０】
前記ステートマシンの各々のノードは、前記決定された言語ロケールのもとで前記サーチ用語の対応するキャラクタの同じ意味を有するキャラクタを表わす、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１１】
前記ステートマシンの各ノードは、異なる言語ロケールにおいて同じ意味を有する異なるキャラクタの変化の照合（コレーション）を表わすコレーションキーに関連付けられる、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記コレーションキーは、異なる言語ロケールにおける各々のキャラクタを表わすインターナショナル・コンポーネント・ユニコード（ＩＣＵ）から導出される、請求項１１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記ステートマシンを横断することは、
前記ステートマシンの各ノードの第１コレーションキーを前記サーチ用語の対応するキャラクタの第２コレーションキーに対してマッチングさせること、及び
前記第２コレーションキーにマッチングしないコレーションキーを有するキャラクタ候補を前記ステートマシンから除去すること、
を含む請求項１１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記反転型インデックスの用語は、トライアーキテクチャーに記憶され、前記ステートマシンの各ノードを横断して、前記トライアーキテクチャーの対応するノードを探索し、それに対応するポスティングリストを識別する、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１５】
コンピュータにより実行されるインデックス方法であって、
サーチ用語を有するサーチ問合せに応答して、そのサーチ用語のキャラクタごとにコレーションキーを決定する処理と、
前記サーチ用語に基づき複数のノードを有するステートマシンを動的に構築する処理であって、各ノードは、前記サーチ用語におけるキャラクタの１つを表わすものである当該処理と、
前記ステートマシンの各ノードに対応する反転型インデックスの１つ以上のポスティングリストを識別するように前記ステートマシンの各ノードを横断する処理であって、
前記ステートマシンのノードごとに、現在言語ロケールに基づき同じ意味をもつ１つ以上の等価キャラクタを識別し、
前記等価キャラクタのコレーションキーを、前記サーチ用語における対応するキャラクタのコレーションキーと比較し、
前記サーチ用語における対応するキャラクタのコレーションキーとマッチングしないコレーションキーを有する等価キャラクタを除去し、残りのキャラクタを使用して、前記反転型インデックスにおける１つ以上のポスティングリストを識別する、
ことを含む当該処理と、
が実行される方法。
【請求項１６】
前記１つ以上のポスティングリストから得た１つ以上のアイテム識別子をクライアントに提供する処理を更に含み、前記アイテム識別子は、前記ステートマシンにより表されるサーチ用語の変化を含む１つ以上のファイルを識別するものである、請求項１５に記載の方法。
【請求項１７】
前記コレーションキーは、異なる言語ロケールにおけるキャラクタを表わすインターナショナル・コンポーネント・ユニコード（ＩＣＵ）から導出される、請求項１５に記載の方法。
【請求項１８】
コンピュータにより実行されるインデックス方法であって、
インデックスされるべき１つ以上のキャラクタを有する第１の用語をデータ処理システムで受信する処理と、
前記データ処理システムの現在言語ロケールを決定する処理と、
前記現在言語ロケールのもとで前記第１の用語のキャラクタごとにコレーションキーを決定する処理と、
前記第１の用語の実際のキャラクタに基づいてインデックスすることなく反転型インデックスにおける前記第１の用語のキャラクタごとに前記コレーションキーをインデックスする処理と、
を含み、
前記コレーションキーは、現在言語ロケールのもとで同じ意味をもつ１つ以上の等価キャラクタの群を表わし、更に、前記反転型インデックスは、コレーションキーに基づいてその後のサーチに使用される方法。
【請求項１９】
１つ以上のキャラクタを有する第２の用語をもつサーチ問合せをクライアントから前記データ処理システムで受信する処理と、
前記現在言語ロケールに基づいて各キャラクタを表わす１つ以上のコレーションキーのシーケンスを発生する処理と、
前記コレーションキーのシーケンスに基づいて前記反転型インデックスをサーチして、前記コレーションキーに関連した１つ以上のポスティングリストを識別する処理と、
前記ポスティングリストから得た１つ以上のアイテム識別子のリストをクライアントに返送する処理であって、そのアイテム識別子は、前記コレーションキーに対応するキャラクタを含む１つ以上のファイルを識別するものである当該処理と、
を更に含む請求項１８に記載の方法。
【請求項２０】
前記コレーションキーは、異なる言語ロケールにおけるキャラクタを表わすインターナショナル・コンポーネント・ユニコード（ＩＣＵ）から導出される、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、データをインデックス及びサーチする分野に関するもので、より詳細には、言語ロケール（設定情報：locale）に基づいてインデックス及びサーチすることに関する。
【背景技術】
【０００２】
汎用コンピュータシステムのような近代的なデータ処理システムは、そのようなシステムのユーザが種々の異なる形式のデータファイルを生成できるようにする。例えば、データ処理システムの典型的なユーザは、マイクロソフトワードのようなワード処理プログラムでテキストファイルを生成するか、又はアドベのフォトショップのような画像処理プログラムで画像ファイルを生成することができる。典型的なデータ処理システムに対して、多数の他の形式のファイルを生成又は変更し、編集し、さもなければ、１人以上のユーザにより利用することができる。生成又は変更することのできる非常に多数の異なる形式のファイルは、生成された特定ファイルを見出すことを求める典型的なユーザに対して課題を提起する。
【０００３】
近代的なデータ処理システムは、多くの場合に、ユーザが種々のディレクトリ又はサブディレクトリ（例えば、フォルダ）にファイルを入れることができるようにすると共に、ユーザがファイルに名前を付けられるようにするファイルマネージメントシステムを備えている。更に、これらのファイルマネージメントシステムは、多くの場合に、ユーザが、ファイルのコンテンツをサーチするだけでなく、ファイルの名前、又は生成の日付、又は変更の日付、又はファイルの形式もサーチすることにより、ファイルを見出すことができるようにする。そのようなファイルマネージメントシステムの一例は、カリフォルニア州クパチーノのアップル・コンピュータ・インクから入手できるマッキントッシュコンピュータで動作する「ファインダー(Finder)」プログラムである。ファイルマネージメントシステムプログラムの別の例は、ワシントン州レドモンドのマイクロソフト・コーポレーションから入手できるウインドウズオペレーティングシステムで動作する「ウインドウズ・エクスプローラ」プログラムである。「ファインダー」プログラム及び「ウインドウズ・エクスプローラ」プログラムは、両方とも、ファイル名、又は生成の日付、又は変更の日付、又はファイルの形式を含む種々の基準によりユーザがファイルをサーチできるようにする見出しコマンドを含む。このサーチ能力は、ファイルの形式に関わらず、ファイルごとに同じ情報を通してサーチを行う。従って、例えば、「マイクロソフトワード」ファイルのサーチ可能なデータは、「アドベフォトショップ」ファイルのサーチ可能なデータと同じであり、このデータは、典型的に、ファイルマネージメントシステムによりファイルに対して維持されるファイル名、ファイルの形式、生成の日付、最後の変更の日付、ファイルのサイズ、及び他の幾つかのパラメータを含む。
【０００４】
幾つかの既存のアプリケーションプログラムは、ユーザが特定のファイルに関するデータを維持できるようにする。特定のファイルに関するこのデータは、他のデータに関するデータであるから、メタデータと考えられる。特定ファイルに対するこのメタデータは、ファイルの著者に関する情報、ドキュメントの概要、及び種々の他の形式の情報を含む。「ファインだ」プログラムのようなあるファイル管理システムは、ユーザがメタデータを通してサーチすることでファイルを見出すことができるようにする。
【０００５】
典型的なシステムでは、反転型インデックスと通常称されるものにおいて、「ファインダー」プログラムのようなプログラムを使用して、種々のコンテンツ、ファイル及びメタデータが、後で検索するために、インデックスされる。例えば、反転型インデックスは、特定のワードが現れるドキュメントに対する参照のリストを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
2013544393.tif 000003
【課題を解決するための手段】
【０００７】
本発明の１つの態様によれば、クライアントから受け取られたサーチ用語を有するサーチ問合せに応答して、現在言語ロケールが決定される。この現在言語ロケールに基づいてステートマシンが構築され、このステートマシンは、サーチ用語の同じ意味を有するサーチ用語の変化(variance)を表わすための１つ以上のノードを含む。ステートマシンの各ノードは、ステートマシンの各ノードに対応する反転型インデックスの１つ以上のポスティングリストを識別するように横断される。１つ以上のポスティングリストから得られた１つ以上のアイテム識別子は、クライアントへ返送され、そこで、アイテム識別子は、ステートマシンによって表わされるサーチ用語の変化を含む１つ以上のファイルの１つ以上のエントリー又はロケーションを識別する。
【０００８】
本発明の別の態様によれば、サーチ用語を有するサーチ問合せに応答して、サーチ用語の部分ごとに照合のためのコレーション(collation)キーが決定される。１つ以上のノードを有するステートマシンがサーチ用語に基づいて構築され、各ノードは、サーチ用語におけるキャラクタの１つを表わす。ステートマシンにおけるノードの各々は、ステートマシンの各ノードに対応する反転型インデックスの１つ以上のポスティングリストを識別するように横断される。ステートマシンのノードごとに、同じ意味をもつ１つ以上の等価キャラクタが、現在言語ロケールに基づいて識別される。等価キャラクタのコレーションキーが、サーチ用語における対応キャラクタ（１つ又は複数）のキー（１つ又は複数）と比較される。サーチ用語における対応キャラクタのコレーションキーに一致しないコレーションキーを有する等価キャラクタが除去され、残りのキャラクタを使用して、反転型インデックスにおける１つ以上のポスティングリストを識別する。
【０００９】
本発明の更に別の態様によれば、データ処理システムに第１の用語が受け取られ、この第１の用語は、インデックスされるべき１つ以上のキャラクタを含む。データ処理システムの現在言語ロケールが決定される。第１の用語の各キャラクタのコレーションキーは、現在言語ロケールのもとで決定される。第１の用語の各キャラクタのコレーションキーは、第１の用語の実際のキャラクタに基づいてインデックスされずに反転型インデックスにおいてインデックスされる。コレーションキーは、現在言語ロケールのもとで同じ意味をもつ１つ以上の等価キャラクタのファミリを表わし、コレーションキーに基づくその後のサーチには反転型インデックスが使用される。
【００１０】
本発明の他の特徴は、添付図面及び以下の詳細な説明から明らかとなろう。
【００１１】
本発明の実施形態は、同様の要素が同じ参照番号で示された添付図面に一例として示すが、これに限定されるものではない。
【図面の簡単な説明】
【００１２】
【図１】本発明の１つの実施形態によるインデックス及びサーチシステムを示すブロック図である。
【図２】本発明の一実施形態によるステートマシンを示す状態図である。
【図３】本発明の一実施形態によるステートマシンを示す状態図である。
【図４】本発明の一実施形態によるステートマシンを示す状態図である。
【図５】本発明の一実施形態により言語ロケールに基づいてインデックス及びサーチを行う方法を示すフローチャートである。
【図６】本発明の一実施形態によるコレーションキーに基づくステートマシンを示す図である。
【図７】本発明の一実施形態によるコレーションキーに基づくステートマシンを示す図である。
【図８】本発明の一実施形態によるデータ構造を示す図である。
【図９】本発明の一実施形態によるデータ構造を示す図である。
【図１０】本発明の別の実施形態によるサーチ方法を示すフローチャートである。
【図１１】本発明の一実施形態によるコレーションキーに基づくインデックス及びサーチ方法を示すフローチャートである。
【図１２】本発明の一実施形態に使用されるデータ処理システムのブロック図である。
【発明を実施するための形態】
【００１３】
本発明の種々の実施形態及び態様が以下に詳細に説明され、添付図面は種々の実施形態を示す。以下の説明及び添付図面は、本発明を例示するもので、本発明を限定するものではない。本発明の種々の実施形態を完全に理解するために多数の特定の細部について述べる。しかしながら、ある場合には、本発明の実施形態の説明を簡略にするため、良く知られた又は従来の細部は、述べない。
【００１４】
本明細書において「１つの実施形態」又は「一実施形態」とは、実施形態に関連して述べる特定の特徴、構造又は特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。本明細書の種々の場所で「１つの実施形態において」という句が現れたときには、必ずしも、全てが同じ実施形態を指していない。
【００１５】
ある実施形態によれば、インデックス（例えば、反転型インデックス）は、使用される言語ロケールの種類に基づいて異なる仕方で構築される。１つの実施形態において、インデックス段階中にほとんど又は全ての言語ロケールのほとんど又は全てのキャラクタ（特殊なキャラクタを含む）を網羅するようにインデックスが構築される。その後に、サーチ問合せのサーチ用語を含むファイルをサーチするためにサーチ問合せが受け取られたときに、その時点の言語ロケールに基づいてステートマシンが動的に構築され、ここで、ステートマシンは、同じ又は同様の意味をもつ言語ロケールのもとでサーチ用語の全ての変化を表わす。これは、実際に、その時点の言語ロケールのもとで異なる意味をもつが、他の言語ロケールでは同じ意味をもつキャラクタをふるい落とす。
【００１６】
別の実施形態によれば、移動装置のようなあるオペレーティング環境では、ローカライゼーションはスタティックのままである傾向がある（例えば、言語ロケールは比較的長期間同じままである）ので、インデックスは言語に特有の仕方で構築される。例えば、実際のキャラクタ又は用語をインデックスするのではなく、複数のキャラクタ又は問合せ用語が等価である場合には、キャラクタ又は用語に対応するコレーションキーがインデックスされる。その結果、インデックスは、比較的小さなサイズに維持することができ、ひいては、より高速のサーチとなる。
【００１７】
図１は、本発明の１つの実施形態によるインデックス及びサーチシステムを示すブロック図である。図１を参照すれば、システム１００は、これに限定されないが、インデックスソフトウェア１０１と、サーチソフトウェア１０２と、それらのインデックスソフトウェア１０１及びサーチソフトウェア１０２並びに他のソフトウェアプログラムに作動的に結合されたオペレーティングシステム（ＯＳ）のカーネルのような１つ以上のシステムコンポーネントと、を備えている。サーチソフトウェア１０２は、コンテンツでサーチする（コンテンツで見出すとも称される）ソフトウェア１０７、メタデータでサーチする（メタデータで見出すとも称される）ソフトウェア１０８のような、種々のサーチプログラムを含む。例えば、コンテンツでサーチするソフトウェア１０７及び／又はメタデータでサーチするソフトウェア１０８は、カリフォルニア州クパチーノのアップル（Ｒ）社から入手できるＭａｃ  ＯＳTMのＦｉｎｄｅｒTMプログラムのような任意の種類のオペレーティングシステムのブラウジングプログラムの一部分として具現化される。
【００１８】
１つの実施形態において、コンテンツで見出すソフトウェア１０７及び／又はメタデータで見出すソフトウェア１０８は、コンテンツファイル１０３又はメタデータ１０４に存在する用語を見出すのに使用される。例えば、ソフトウェア１０７／１０８は、「マイクロソフトワード」、等のワード処理プログラムにより生成されるワード処理又はテキスト処理ファイルからテキスト及び他の情報を見出すのに使用される。
【００１９】
コンテンツで見出すソフトウェア１０７及びメタデータで見出すソフトウェア１０８は、１つ以上のインデックス１０５を含むデータベースに作動的に結合される。インデックス１０５は、ファイルデータ１０３及びメタデータ１０４を含めて、記憶装置におけるデータファイルのサブセットを少なくとも表わし、そしてコンピュータシステムのメインハードドライブのような特定の記憶装置（又は複数の記憶装置）における全てのデータファイルを含む。１つ以上のインデックス１０５は、テキストドキュメント、音楽、ビデオ、又は他の形式のファイルのような、ファイル１０３／１０４に記憶された各アイテムのコンテンツ及び／又はメタデータのインデックスされた表現を含む。コンテンツで見出すソフトウェア１０７は、１つ以上のインデックスファイル１０５を通してサーチすることによりそのコンテンツにおける用語をサーチして、インデックスされたデータファイル１０３に記憶されたアイテムに、例えば、特定のワードのような特定の用語が存在するかどうか決定する。コンテンツで見出すソフトウェアの機能は、メタデータで見出すソフトウェア１０８を通して利用することができ、これは、データファイル１０３に記憶されたアイテム内のコンテンツ１０３及びそのアイテムに対して発生されたメタデータ１０８に対してユーザがインデックス１０５をサーチできるという効果をユーザに与える。
【００２０】
本発明の１つの実施形態において、インデックスソフトウェア１０１は、コンテンツ及びメタデータで見出すソフトウェアアプリケーション１０７／１０８に結合される１つ以上のインデックス１０５を生成し維持するのに使用される。他の機能の中で、インデックスソフトウェア１０１は、コンテンツファイル１０３及びメタデータ１０４をスキャンすることにより得られる情報を受け取り、そしてその情報を使用して、１つ以上のポスティングリスト１０６を発生し、このリストは、特定の用語を含むか又は特定の用語を含むメタデータを有するアイテム（例えば、ファイル）を識別するものである。従って、ポスティングリストは、サーチ用語のような用語を、そのリストで識別されるアイテムへとマップする一形式の反転型インデックスである。
【００２１】
１つの実施形態において、スキャン中に得られる情報は、特定の用語を含むか又はその用語を含むメタデータを有するアイテムを独特に識別する独特の識別子を含んでいる。例えば、ワード処理又はテキスト処理ファイルのようなアイテムは、ＩＴＥＭＩＤと称される独特の識別子を有する。ＩＴＥＭＩＤは、ワード“Ａｐｐｌｅ”のような特定の用語を含むアイテムを識別すためにポスティングリスト（例えば、ポスティングファイル１０６）を発生するときに使用される。画像ファイル又は音楽ファイルのような他の形式のファイルを識別するＩＴＥＭＩＤも、１つ以上のポスティングリスト１０６に掲示され、このケースでは、ＩＴＥＭＩＤは、典型的に、特定の用語を含むメタデータを有するアイテムを識別する。１つの実施形態において、インデックスソフトウェア１０１は、１つ以上の用語に対するポスティングリスト１０６を１つ以上の更新セット（図示せず）へと累積し、そして時々それら更新セットを１つ以上のインデックスファイル１０５へとフラッシュする。
【００２２】
１つの実施形態において、サーチソフトウェア１０２は、更に、オペレーティングシステム又はシステム／ユーザ構成の一部分として構成された言語ロケール情報１１０に基づいてサーチ時にステートマシンを構築するように構成されたサーチステートマシンビルダー１０９を備えている。１つの実施形態において、サーチ用語を含むコンテンツファイル又はメタデータをサーチするためにサーチ問合せが受け取られると、ステートマシンビルダー１０９は、ロケール情報１１０から得られた現在言語ロケールに基づいてサーチ用語を表現するためにステートマシンを動的に構築するよう構成される。ステートマシンは、現在言語ロケールのもとでサーチ用語のキャラクタ又は等価キャラクタを各々表わす１つ以上のノードを含む。即ち、ステートマシンは、同じ又は同様の意味をもつ言語ロケールのもとでサーチ用語の全ての変化を表わす。これは、実際に、その時点の言語ロケールのもとで異なる意味をもつが、他の言語ロケールでは同じ意味をもつキャラクタをふるい落とす。
【００２３】
2013544393.tif 000004
【００２４】
2013544393.tif 000005
【００２５】
2013544393.tif 000006
【００２６】
図５は、本発明の１つの実施形態により言語ロケールに基づいてインデックス及びサーチを行う方法を示すフローチャートである。例えば、この方法は、図１のシステム１００によって遂行される。図５を参照すれば、ブロック５０１において、全部又はほとんどの言語ロケールの用語及びキャラクタについて反転型インデックスが維持される。クライアントから受け取ったサーチ用語を有するサーチ問合せに応答して、その時点の現在言語ロケールが決定される。現在言語ロケールに基づき、ブロック５０３において、サーチ用語の各キャラクタ（例えば、等価キャラクタ）の全ての変化を表わすようにステートマシンが動的に構築される。即ち、ステートマシンは、現在言語ロケールのもとでのサーチ用語の全ての種々の等価キャラクタの全ての組み合わせ又は変更を表わす。ブロック５０４において、インデックスのポスティングリストが、ステートマシンのノードにより表された用語に基づいてサーチされて、ステートマシンにより表された１つ以上の用語を含むアイテム（例えば、ファイル）のリストを識別し、サーチ結果を発生する。ブロック５０５において、サーチ結果がクライアントに返送される。
【００２７】
図１に戻ると、ある実施形態によれば、インデックスファイル１０５及び／又はポスティングリストファイル１０６は、トライ(trie)データ構造又は平坦化構造のようなツリー構造で記憶される。トライは、ツリーの各ノードが、マッチングされるストリングの１つのキャラクタを解明するツリー構造である。各内部ノードは、キャラクタのリストより成る。各キャラクタには、別の内部ノード又はリーフノードへの出リンク(outgoing link)が関連付けられる。各リーフノードは、そのリーフノードへ通じるプレフィックスに関連した結果データを保持する。トライをサーチするために、ルートノードでスタートし、そしてマッチングされるストリングの次のキャラクタに対応する各ノードにおいて出リンクをたどることによりツリーを横断する。マッチングする出リンクを見出せないときには、マッチングが見出されている。
【００２８】
各キャラクタは、そのユニコード及び／又はそれに対応するコレーションキーにより表される。例えば、そのようなユニコード及びコレーションキーは、インターナショナル・コンポーネント・フォー・ユニコード（ＩＣＵ）統治団体により規定される。キャラクタは、単一ユニコードにより表されたコンポーズ型(composed)形態で記憶されるか、或いは複数のユニコードで表されるデコンポーズ型(decomposed)形態で記憶される。１つの実施形態において、キャラクタは、８ビットのユニコードトランスフォーメーションフォーマット（ＵＴＦ−８）キャラクタのように、ユニコードに対する可変長さキャラクタエンコーディングとして記憶される。
【００２９】
2013544393.tif 000007
【００３０】
2013544393.tif 000008
【００３１】
2013544393.tif 000009
【００３２】
2013544393.tif 000010
【００３３】
2013544393.tif 000011
【００３４】
図１０は、本発明の別の実施形態によるサーチ方法を示すフローチャートである。例えば、この方法１０００は、図１のシステムにより遂行される。図１０を参照すれば、ブロック１００１において、サーチ用語に応答して、サーチ用語のキャラクタごとのコレーションキーが決定される。そのようなコレーションキーは、ＩＣＵ統治団体により規定された１つ以上のルールに基づいて決定される。ブロック１００２において、ステートマシンが動的に構築され、ここで、ステートマシンは、サーチ用語のキャラクタの１つに各々対応する１つ以上のノードを含む。ブロック１００３において、ステートマシンの各ノードに対して、１つ以上の等価キャラクタが現在言語ロケールに基づいて識別される。ブロック１００４において、等価キャラクタのコレーションキーが、サーチ用語に関連したコレーションキーとマッチングされる。ブロック１００５において、コレーションキーがサーチ用語の対応する１つにマッチングしないキャラクタが除去される。
【００３５】
移動装置のようなあるオペレーティング環境では、言語ロケールが安定する傾向となる。即ち、オペレーティング環境の言語ロケールは、頻繁に変化しない。むしろ、そのようなオペレーティング環境では、メモリ及び／又は記憶装置のような処理帯域巾が限定される傾向がある。本発明のある実施形態によれば、用語の実際のキャラクタをインデックスするのではなく、現在言語ロケールに対する用語のキャラクタのコレーションキーがインデックスされる。例えば、移動電話は、典型的に、インデックスされるドキュメントの小さなセットを有する。１つの実施形態では、コレーションキーは、現在言語ロケールに基づいてインデックスされる。言語ロケールが変化する場合には、新たな言語ロケールのもとにあるドキュメントのコレーションキーが再インデックスされる。
【００３６】
2013544393.tif 000012
【００３７】
図１１は、本発明の１つの実施形態によるコレーションキーに基づくインデックス及びサーチ方法を示すフローチャートである。例えば、方法１１００は、図１のシステムにより遂行される。図１１を参照すれば、ブロック１１０１において、インデックスされるべき１つ以上のキャラクタを有する用語に応答して、現在言語ロケールが決定される。言語ロケールは、システムのオペレーティング環境のユーザ及び／又はシステム構成から得られる。ブロック１１０２において、用語のキャラクタの各々又は全部に対して現在言語ロケールに基づいてコレーションキーが発生される。ブロック１１０３において、用語を表わすコレーションキーが反転型インデックスにおいてインデックスされる。その後、ブロック１１０４において、サーチ用語に応答して、サーチ用語の各キャラクタに対するコレーションキーが現在言語ロケールに基づいて発生される。ブロック１１０５において、サーチ用語を表わすコレーションキーに基づいて反転型インデックスがサーチされ、コレーションキーに対応する用語を含む１つ以上のファイルを識別する。ブロック１１０１−１１０３及びブロック１１０４−１１０５に含まれたオペレーションは、例えば、異なるスレッドを通して、独立して遂行されてもよいことに注意されたい。
【００３８】
図１２は、本発明の一実施形態に使用できるデータ処理システムのブロック図である。例えば、このシステム１２００は、図１のシステム１００として使用されてもよい。図１２は、コンピュータシステムの種々のコンポーネントを示すが、コンポーネントを相互接続する特定のアーキテクチャー又は方法を表わすものではないことに注意されたい。というのは、そのような細部は、本発明にとって関係がないからである。また、より少ないコンポーネント又はおそらくより多くのコンポーネントを有するネットワークコンピュータ、ハンドヘルドコンピュータ、セルラーホン及び他のデータ処理システムも、本発明に使用できることが明らかであろう。図１２のコンピュータシステムは、例えば、アップル・マッキントッシュ（Ｒ）コンピュータ、又はＭａｃＢｏｏｋ（Ｒ）、或いはＩＢＭ（Ｒ）適合のＰＣでよい。
【００３９】
図１２に示したように、一形式のデータ処理システムであるコンピュータシステム１２００は、バス又は相互接続部１２０２を備え、これは、１つ以上のマイクロプロセッサ１２０３、ＲＯＭ１２０７、揮発性ＲＡＭ１２０５、及び不揮発性メモリ１２０６に結合される。マイクロプロセッサ１２０３は、キャッシュメモリ１２０４に結合される。バス１２０２は、これら種々のコンポーネントを一緒に相互接続すると共に、これらコンポーネント１２０３、１２０７、１２０５及び１２０６を、ディスプレイコントローラ・ディスプレイ装置１２０８、並びに入力／出力（Ｉ／Ｏ）装置１２１０に相互接続し、そのＩ／Ｏ装置は、マウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、及びこの分野で良く知られた他の装置である。
【００４０】
典型的に、入力／出力装置１２１０は、入力／出力コントローラ１２０９を通してシステムに結合される。揮発性ＲＡＭ１２０５は、典型的に、メモリ内のデータをリフレッシュ又は維持するために常時電力を必要とするダイナミックＲＡＭ（ＤＲＡＭ）として具現化される。不揮発性メモリ１２０６は、典型的に、システムから電力が取り去られた後もデータを維持する磁気ハードディスク、磁気光学ドライブ、光学ドライブ、又はＤＶＤ  ＲＡＭ、或いは他の形式のメモリシステムである。典型的に、不揮発性メモリは、ランダムアクセスメモリであるが、これは、必要なことではない。
【００４１】
図１２は、不揮発性メモリが、データ処理システム内の残りのコンポーネントに直結されたローカル装置であることを示しているが、本発明は、システムから遠隔にある不揮発性メモリ、例えば、モデム又はイーサネットインターフェイスのようなネットワークインターフェイスを通してデータ処理システムに結合されたネットワーク記憶装置を使用してもよい。バス１２０２は、この分野で良く知られたように、種々のブリッジ、コントローラ、及び／又はアダプタを通して互いに接続される１つ以上のバスを含む。１つの実施形態において、Ｉ／Ｏコントローラ１２０９は、ＵＳＢ周辺装置をコントロールするためのＵＳＢ（ユニバーサルシリアルバス）アダプタを含む。或いは又、Ｉ／Ｏコントローラ１２０９は、ＦｉｒｅＷｉｒｅ装置をコントロールするためのＦｉｒｅＷｉｒｅアダプタとしても知られたＩＥＥＥ−１３９４アダプタを含んでもよい。
【００４２】
以上の詳細な説明のある部分は、コンピュータメモリ内のデータビットに対するオペレーションのアルゴリズム及び記号表示に関して表現されている。これらのアルゴリズム記述及び表示は、データ処理分野の当業者が、彼らの仕事の実質を他の当業者に最も効率的に伝えるために使用される方法である。アルゴリズムとは、ここでは、一般的に、望ましい結果を導く自己矛盾のないオペレーションシーケンスであると考えられる。オペレーションは、物理量の物理的操作を要求するものである。
【００４３】
しかしながら、これら及び同様の用語は、すべて適当な物理量に関連付けられ、そしてそれらの量に適用される便宜的表示に過ぎないことに留意されたい。特に指示のない限り、以上の説明から明らかなように、この説明全体を通して、特許請求の範囲に示すような用語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内で物理的（電子的）量として表されたデータを操作し、そしてコンピュータシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内で物理的量として同様に表される他のデータへと変換するコンピュータシステム又は同様の電子的コンピューティング装置のアクション及び処理を指すものであることが明らかである。
【００４４】
また、本発明の実施形態は、ここに示すオペレーションを遂行するための装置にも係る。そのようなコンピュータプログラムは、不揮発性のコンピュータ読み取り可能な媒体に記憶される。マシン読み取り可能な媒体は、マシン（例えば、コンピュータ）により読み取りできる形態で情報を記憶するためのメカニズムを含む。例えば、マシン読み取り可能な（例えば、コンピュータ読み取り可能な）媒体は、マシン（例えば、コンピュータ）読み取り可能な記憶媒体（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリ装置など）を含む。
【００４５】
添付図面に示すプロセス及び方法は、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア（例えば、非一時的なコンピュータ読み取り可能な媒体で実施される）、又は両方の組み合わせを含む処理ロジックによって遂行される。プロセス又は方法は、順次のオペレーションに関して上述したが、上述したオペレーションの幾つかは、異なる順序で遂行されてもよいことが明らかであろう。更に、幾つかのオペレーションは、順次ではなく、並列に遂行されてもよい。
【００４６】
本発明の実施形態は、特定のプログラミング言語を参照して説明しなかった。ここに述べた本発明の実施形態の教示を具現化するのに、種々のプログラミング言語を使用できることが明らかである。
【００４７】
以上、特定の規範的な実施形態を参照して本発明の実施形態を説明した。特許請求の範囲に述べた本発明の広い精神及び範囲から逸脱せずに種々の変更がなされ得ることが明らかであろう。従って、以上の説明及び添付図面は、単なる例示に過ぎず、それに限定されるものではないと考えられる。
【符号の説明】
【００４８】
１００：システム
１０１： インデックスソフトウェア
１０２：サーチソフトウェア
１０３：コンテンツファイル
１０４：メタデータファイル
１０５：インデックスファイル
１０６：ポスティングファイル
１０７：コンテンツでサーチするソフトウェア
１０８：メタデータでサーチするソフトウェア
１０９：サーチステートマシンビルダー
１１０：ロケール情報
【図１】
2013544393.tif 000013
【図２】
2013544393.tif 000014
【図３】
2013544393.tif 000015
【図４】
2013544393.tif 000016
【図５】
2013544393.tif 000017
【図６】
2013544393.tif 000018
【図７】
2013544393.tif 000019
【図８】
2013544393.tif 000020
【図９】
2013544393.tif 000021
【図１０】
2013544393.tif 000022
【図１１】
2013544393.tif 000023
【図１２】
2013544393.tif 000024
【国際調査報告】
2013544393.tif 000025
2013544393.tif 000026
2013544393.tif 000027
2013544393.tif 000028
2013544393.tif 000029