(57)【特許請求の範囲】
【請求項１】
第１のユーザのクライアントデバイスから受信された第１のエンティティが、各エンティティが１つ以上のインデックスポイントと関連付けられる索引において索引付けされた複数のエンティティのうちの少なくとも１つの他のエンティティと一致するかを判定できるマッチングシステムであって、
マッチングエンジン及び前記クライアントデバイスと通信するように構成されるアプリケーションサーバと、
前記第１のエンティティを前記索引の１つ以上のインデックスポイントと関連付けることにより前記第１のエンティティを索引付けし、前記第１のエンティティと関連づけられた１つ以上のインデックスポイントと関連付けられた他のエンティティを検索することで、前記索引において索引付けされた複数のエンティティの中から前記第１のエンティティと一致する他のエンティティを検索するように構成される前記マッチングエンジンとを備え、
一致トリガ事象が発生した時に前記第１のエンティティと一致する他のエンティティの検索を開始するように構成されるマッチングシステムであって、
前記マッチングシステムは、検索が前記第１のエンティティの受信時に開始されるように前記第１のエンティティの受信を一致トリガ事象として解釈するように構成されることを特徴とするマッチングシステム。
【請求項２】
前記マッチングエンジンは、前記第１のエンティティが関連付けられるインデックスポイント毎に、前記第１のエンティティをそのインデックスポイントと関連付け且つそのインデックスポイントと関連付けられる他のエンティティを識別する情報を検索し、それにより前記索引の１回の考察で前記第１のエンティティを索引付けし且つ前記第１のエンティティと一致するエンティティを識別するように構成される
ことを特徴とする請求項１に記載のマッチングシステム。
【請求項３】
前記エンティティは単語を含み、前記索引は、各々が単語に対応し且つ前記単語を含むエンティティと関連付けられる複数のインデックスポイントを含み、
前記マッチングエンジンは、
対応するインデックスポイントが前記索引に存在しない前記第１のエンティティ内で発生する単語毎に、その単語に対応する新しいインデックスポイントを前記索引に追加し且つ前記第１のエンティティを前記新しいインデックスポイントと関連付け、
対応するインデックスポイントが前記索引に既に存在する前記第１のエンティティ内で発生する単語毎に、前記第１のエンティティをそのインデックスポイントと関連付け且つ関連付けられた他のエンティティを識別する情報を検索するように構成される
ことを特徴とする請求項２に記載のマッチングシステム。
【請求項４】
前記索引は、前記インデックスポイントが対応する前記単語が前記単語を形成する文字シーケンスにトークン化される木構造索引であり、前記文字シーケンスは、各単語の文字が枝の根ノードと単語末尾ノードとの間の枝又は枝の一部を形成し、前記木構造索引の前記インデックスポイントが前記木構造の前記単語末尾ノードに対応し且つ各インデックスポイントが前記インデックスポイントと前記枝の根ノードとの間の前記文字シーケンスにより形成された前記単語を含む全てのエンティティと関連付けられるように、各シーケンスの第１の文字が前記枝の根ノードと関連付けられ且つ後続する各文字が先行する文字の関連付けられた前記ノードの子ノードと関連付けられる順序木構造に従って構造化され、
前記マッチングエンジンは、
前記第１のエンティティ内の各単語を文字シーケンスにトークン化し且つ前記そのように形成された文字シーケンスを前記木構造の既存の枝又は枝の一部とマッチングし、
一致する文字シーケンスが見つけられない単語毎に、前記そのように形成された枝が前記単語の前記文字シーケンスに対応するように新しい枝を作成するか又は既存の枝に子ノードを追加し且つ前記第１のエンティティを前記そのように形成された枝の葉ノードと関連付けることにより新しいインデックスポイントを作成し、
一致する文字シーケンスが見つけられる単語毎に、前記第１のエンティティを前記一致する文字シーケンスの前記インデックスポイントと関連付け且つ関連付けられた他のエンティティを識別する情報を検索するように構成される
ことを特徴とする請求項３に記載のマッチングシステム。
【請求項５】
前記マッチングエンジンは、前記第１のエンティティが関連付けられる少なくとも１つのインデックスポイントと関連付けられる複数のエンティティを前記マッチングエンジンが見つけた時に前記複数のエンティティの各々が前記第１のエンティティと共通に有するインデックスポイント数、すなわち前記複数のエンティティの各々が関連付けられ且つ前記第１のエンティティとも関連付けられるインデックスポイント数である少なくとも１つの基準に基づいて前記複数のエンティティを評価するように構成される一致評価手段を含むことを特徴とする請求項１乃至４のいずれか１項に記載のマッチングシステム。
【請求項６】
各インデックスポイントと関連付けられた前記エンティティを識別する前記検索された情報は、前記インデックスポイントと関連付けられた全てのエンティティを識別するエンティティ識別パラメータのリストであり、前記マッチングエンジンは、全てのインデックスポイントに対して検索された全てのエンティティ識別パラメータを構成するように構成され、前記一致評価手段は、各エンティティのエンティティ識別パラメータが前記リストで発生する回数に基づいて前記一致するエンティティを評価するように構成されることを特徴とする請求項２乃至４のいずれか１項を引用する場合の請求項５に記載のマッチングシステム。
【請求項７】
前記アプリケーションサーバは、少なくとも１つの一致するエンティティが前記検索中に見つけられた時、前記一致トリガ事象に応答して前記第１のユーザの前記クライアントデバイスに対して前記少なくとも１つの一致するエンティティを識別する情報を送出するように構成されることを特徴とする請求項１乃至６のいずれか１項に記載のマッチングシステム。
【請求項８】
前記アプリケーションサーバは、第２のユーザのクライアントデバイスから前記アプリケーションサーバに先に送出された少なくとも１つの一致するエンティティが前記検索中に見つけられた時、前記一致トリガ事象に応答して前記第２のユーザの前記クライアントデバイスに対して前記第１のエンティティを識別する情報を送出するように構成されることを特徴とする請求項１乃至７のいずれか１項に記載のマッチングシステム。
【請求項９】
第１のユーザのクライアントデバイスから受信された第１のエンティティが、各エンティティが１つ以上のインデックスポイントと関連付けられる索引において索引付けされた複数のエンティティのうちの少なくとも１つの他のエンティティと一致するかを判定する方法であって、
サーバノードにおいて前記第１のエンティティを受信するステップと、
前記第１のエンティティを前記索引の１つ以上のインデックスポイントと関連付けることにより前記第１のエンティティを索引付けするステップと、
前記第１のエンティティが関連付けられる前記インデックスポイントのうちの少なくとも１つと関連付けられた他のエンティティを検索することにより前記索引において索引付けされた前記複数のエンティティのうち前記第１のエンティティと一致する他のエンティティを検索するステップとを有し、
前記第１のエンティティと一致する他のエンティティの検索が一致トリガ事象の発生時に開始される方法であって、
前記第１のエンティティの受信を一致トリガ事象として解釈し、それにより前記第１のエンティティの受信時に前記検索を開始するステップを有することを特徴とする方法。
【請求項１０】
前記第１のエンティティに一致する他のエンティティを検索するステップ及び前記第１のエンティティを索引付けするステップは、前記第１のエンティティが関連付けられるインデックスポイント毎に、
前記第１のエンティティをそのインデックスポイントと関連付け、
そのインデックスポイントと関連付けられる他のエンティティを識別する情報を検索することによって実行され、
これにより前記索引の１回の考察で前記第１のエンティティを索引付け、及び、前記第１のエンティティと一致する他のエンティティを識別が行われる
ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記エンティティは単語を含み、前記索引は、各々が単語に対応し且つ前記単語を含むエンティティと関連付けられる複数のインデックスポイントを含み、前記方法は、
対応するインデックスポイントが前記索引に存在しない前記第１のエンティティ内で発生する単語毎に、
その単語に対応する新しいインデックスポイントを前記索引に追加するステップと、
前記第１のエンティティを前記新しいインデックスポイントと関連付けるステップと、
対応するインデックスポイントが前記索引に既に存在する前記第１のエンティティ内で発生する単語毎に、
前記第１のエンティティをそのインデックスポイントと関連付けるステップと、
関連付けられた他のエンティティを識別する情報を検索するステップと
を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記索引は、前記インデックスポイントが対応する前記単語が前記単語を形成する文字シーケンスにトークン化される木構造索引であり、前記文字シーケンスは、各単語の文字が枝のルートノードと単語末尾ノードとの間の枝又は枝の一部を形成し、前記木構造索引の前記インデックスポイントが前記木構造の前記単語末尾ノードに対応し且つ各インデックスポイントが前記インデックスポイントと前記枝のルートノードとの間の前記文字シーケンスにより形成された前記単語を含む全てのエンティティと関連付けられるように、各シーケンスの第１の文字が前記枝のルートノードと関連付けられ且つ後続する各文字が先行する文字の関連付けられた前記ノードの子ノードと関連付けられる順序木構造に従って構造化され、前記方法は、
前記第１のエンティティ内の各単語を文字シーケンスにトークン化するステップと、
前記そのように形成された文字シーケンスを前記木構造の既存の枝又は枝の一部とマッチングするステップと、
致する文字シーケンスが見つけられない単語毎に、
前記そのように形成された枝が前記単語の前記文字シーケンスに対応するように新しい枝を作成するか又は既存の枝に子ノードを追加するステップと、
前記第１のエンティティを前記そのように形成された枝の葉ノードと関連付けることにより新しいインデックスポイントを作成するステップと、
致する文字シーケンスが見つけられる単語毎に、
前記第１のエンティティを前記一致する文字シーケンスの前記インデックスポイントと関連付けるステップと、
関連付けられた他のエンティティを識別する情報を検索するステップと
を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第１のエンティティが関連付けられる少なくとも１つのインデックスポイントと関連付けられる複数のエンティティが前記一致するエンティティの検索中に見つけられた時、
前記複数のエンティティの各々が前記第１のエンティティと共通に有するインデックスポイント数、すなわち前記複数のエンティティの各々が関連付けられ且つ前記第１のエンティティとも関連付けられるインデックスポイント数である少なくとも１つの基準に基づいて前記複数のエンティティを評価するステップを更に含むことを特徴とする請求項９乃至１２のいずれか１項に記載の方法。
【請求項１４】
各インデックスポイントと関連付けられた前記エンティティを識別する前記検索された情報は、前記インデックスポイントと関連付けられた全てのエンティティを識別するエンティティ識別パラメータのリストであり、前記方法は、
リスト中の全てのインデックスポイントに対して検索された全てのエンティティ識別パラメータを構成するステップと、
各エンティティのエンティティ識別パラメータが前記リストで発生する回数に基づいて前記一致するエンティティを評価するステップとを含むことを特徴とする請求項１０乃至１２のいずれか１項を引用する場合の請求項１３に記載の方法。
【請求項１５】
少なくとも１つの一致するエンティティが前記検索中に見つけられた時、前記一致トリガ事象に応答して前記第１のユーザの前記クライアントデバイスに対して前記少なくとも１つの一致するエンティティを識別する情報を送出するステップを含むことを特徴とする請求項９乃至１４のいずれか１項に記載の方法。
【請求項１６】
第２のユーザのクライアントデバイスから前記サーバノードにより先に受信された少なくとも１つの一致するエンティティが前記検索中に見つけられた時、前記一致トリガ事象に応答して前記第２のユーザの前記クライアントデバイスに対して前記第１のエンティティを識別する情報を送出するステップを含むことを特徴とする請求項９乃至１５のいずれか１項に記載の方法。
【請求項１７】
サーバコンピュータ上で実行したとき、前記サーバコンピュータを、第１のユーザのクライアントデバイスから受信された第１のエンティティが、各エンティティが１つ以上のインデックスポイントと関連付けられる索引において索引付けされた複数のエンティティのうちの少なくとも１つの他のエンティティと一致するかを判定させるコンピュータ可読コード手段を含むコンピュータプログラムであって、
前記第１のエンティティを前記索引において１つ以上のインデックスポイントと関連付けることにより、前記第１のエンティティを索引付けするステップと、
前記第１のエンティティが関連付けられる前記インデックスポイントのうちの少なくとも１つと関連付けられた他のエンティティを検索することにより前記索引において索引付けされた複数のエンティティのうち前記第１のエンティティと一致する他のエンティティを検索するステップとを有し、
前記第１のエンティティと一致する他のエンティティの検索が一致トリガ事象の発生時に開始されるコンピュータプログラムであって、
前記コンピュータプログラムは、前記サーバコンピュータに前記第１のエンティティの受信を一致トリガ事象として解釈させ、それにより前記第１のエンティティの受信時に前記検索を開始するように構成されることを特徴とするコンピュータプログラム。
【請求項１８】
前記第１のエンティティが関連付けられるインデックスポイント毎に、前記サーバコンピュータが前記第１のエンティティをそのインデックスポイントと関連付け且つそのインデックスポイントと関連付けられる他のエンティティを識別する情報を検索し、それにより前記索引の１回の考察で前記第１のエンティティを索引付けし且つ前記第１のエンティティと一致するエンティティを識別するように索引付け及び検索を前記サーバコンピュータに実行させるように構成されることを特徴とする請求項１７に記載のコンピュータプログラム。
【請求項１９】
請求項１７又は１８に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの取得及び解析の分野に関し、特に、マッチングシステムにより受信されたエンティティが先に受信したエンティティと一致するかを判定する方法及びシステムに関する。
【背景技術】
【０００２】
過去５〜１０年の間に、「検索(Search)」は世界中の人々のデジタル世界における１つの現象となった。一般的な検索の状況において、短い検索クエリは、大きな文書又は少なくともより大きな文書を見つけるために使用される。一般的な例は、インターネット検索エンジン又は図書館に貯蔵された論文や書籍を検索するための図書館コンピュータにインストールされた検索エンジンである。
【０００３】
上述したような従来の検索(Search)の例は、一般的なマッチング(match)例とは異なる。マッチング例において、他のユーザにより入力されたデータと一致するかを見つける目的で２人以上のユーザがデータをシステムに入力する。すなわち、検索の例とは対照的に、システムに情報を入力する全てのユーザが一致する情報を見つけることに興味を有する。検索の例においては、一般的には１つ又はいくつかのキーワードの形態である検索クエリを入力するユーザのみがマッチング結果に興味を有する。技術的な観点から、マッチングシステムは、少なくとも入力「クエリ」が先に受信したクエリ又は後で受信されるクエリに対して潜在的に一致するものであるためにマッチングシステムがそれらのクエリに索引付けをする必要があるという点で検索エンジンとは異なる。「一致クエリ(match query)」を従来の検索クエリ(search query)と区別するために、「一致クエリ」においてマッチングシステムに送信されたデータは、本明細書において「エンティティ(entity)」と呼ばれる。
【０００４】
マッチングシステムは、多くの種々のマッチングサービスにおいて使用される。そのようなサービスの例は、オンライン就職／採用サービス、電子商取引サービス、オンラインデートサービスである。
【０００５】
既存のマッチングシステムにおいて、マッチング動作は、少なくとも２つのサブ動作、すなわち挿入動作及び検索動作に分割されると言われる。最初に、新しいユーザがエンティティをシステムに送出すると、エンティティがシステムのデータ構造に挿入される挿入動作が行われる。この動作は、高速で正確なエンティティの検索を助長するためにエンティティがインデックスポイントと関連付けられる索引にエンティティを索引付けすることにより他のユーザがエンティティを検索できるようにするステップを含む。後の段階で、システムが一致するエンティティを検索する検索動作が行われる。検索動作は、システム内で起こるある事象により開始される。そのような事象は、「一致トリガ事象」と考えられてもよい。既存のマッチングシステムにおいて、一致トリガ事象は、例えば就職ウェブサイトを訪問した時又は就職アプリケーションをホストするサーバにおいて実行しているタイマの満了時にウェブブラウザにおいてユーザに対して表示された「一致する就職検索ボタン」をユーザが押下することであってもよい。前回一致トリガ事象が起こってから新しく一致するものがシステムに追加されたかを見つけるために、ユーザは次に事象が起こるのを待つ必要がある。すなわち、この例示的な例において、ユーザは、タイマが満了するのを待つか又は検索ボタンを再度押下する必要がある。マッチングシステムが潜在的に一致するものを検索する方法及び時期は、知覚される一致サービスの品質にとって重要である。また、それぞれの一致トリガ事象が起こる間では、マッチングシステムが「不一致状態」である危険性があり、これは、システムがシステムに格納された種々のエンティティが互いに一致することを認識できない可能性があることを意味する。当然、これは、システムが一致するエンティティの存在を認識できない限りユーザがそれら一致するエンティティに関して通知されないため、マッチングシステムの望ましくない状態である。これにより、マッチングシステムが使用されるサービスに関してユーザが知覚する品質は低下することが多い。
【０００６】
マッチングシステムが潜在的に一致するものの検索を実行する方法及び時期は、マッチングシステムにより必要とされる計算能力にとっても重要である。既存のシステムにおいて、索引は、マッチング動作中少なくとも２度考察される必要がある。１度は、エンティティを索引付けする挿入動作中であり、１度は一致するエンティティを追跡するために索引を考察する検索動作中である。一般的なマッチングシステムの索引が膨大なデータを含むため、この処理は遅く且つ計算能力を消費することが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、従来技術に係るマッチングシステムと関連する１つの問題は、システムが使用されるマッチングサービスに関してユーザが知覚する品質を向上する方法である。別の問題は、マッチングシステムにおいて必要とされる計算容量を低減する方法である。更に別の問題は、システムにおいて潜在的に一致するものを全て見つけるのに必要な時間を短縮する方法である。
【０００８】
本発明の目的は、マッチングシステムに対する上述の問題のうち少なくとも１つを解決するか又は少なくとも軽減することである。
【課題を解決するための手段】
【０００９】
この目的は、第１のユーザのクライアントデバイスから受信された第１のエンティティが、各エンティティが１つ以上のインデックスポイントと関連付けられる索引において索引付けされた複数のエンティティのうちの少なくとも１つと一致するかを判定できるマッチングシステムにより達成される。マッチングシステムは、マッチングエンジン及びクライアントデバイスと通信するように構成されるＪａｖａＥＥアプリケーションサーバ等のアプリケーションサーバを含む。マッチングエンジンは、第１のエンティティを索引の１つ以上のインデックスポイントと関連付けることにより第１のエンティティを索引付けし、且つ第１のエンティティが関連付けられるインデックスポイントのうちの少なくとも１つと関連付けられたエンティティを検索することにより索引において索引付けされた複数のエンティティの中から第１のエンティティと一致するエンティティを検索するように構成される。マッチングシステムは、本明細書では一致トリガ事象と呼ばれるものが起こった時に第１のエンティティと一致するエンティティの検索を開始するように構成される。マッチングシステムは、そのような一致トリガ事象として第１のエンティティの受信を解釈するように構成される。これにより、マッチングシステムは、第１のエンティティの受信時に検索を開始するように構成される。
【００１０】
背景の節で説明したように、「エンティティ」という用語は、本明細書において、「一致クエリ」でマッチングシステムに送信されたデータを検索クエリで従来の検索エンジンに送出されたデータと区別するために使用される。本明細書において、エンティティが別のエンティティと一致するということは、エンティティが少なくとも１つの共通のインデックスポイントを有すること、すなわち双方のエンティティが関連付けられるインデックスポイントが少なくとも１つ索引に存在することを意味する。インデックスポイントは、そのインデックスポイントと関連付けられた１つ／複数のエンティティ内で見つけられた１つの記号又は記号シーケンスに対応するあらゆる記号（文字等）又は記号シーケンス（単語等）であってもよく、あるいは関連付けらえた１つ／複数のエンティティの１つ又はいくつかの特性を反映する記号又は記号シーケンスであってもよい。エンティティは、例えばテキストファイル、画像ファイル、オーディオファイル、あるいは関連付けられたエンティティを特徴付けるインデックスポイントの役割を果たす単語又は他の記号シーケンスに「変換」される特性を有するあらゆる他の種類のデータであってもよい。マッチングシステムにより使用される索引は、従来技術において既知のあらゆる種類の検索エンジン／一致エンジン索引であってもよい。使用する索引の種類及び索引データを構造化し且つ格納する方法は、種々の設計因子を満たすように変更されてもよく、例えばシステムが使用されるマッチングサービス及びそのサービスで使用されるエンティティの種類に適合するように変更されてもよい。
【００１１】
新しいエンティティの受信を一致トリガ事象として解釈し、新しいエンティティの受信時に一致するエンティティの検索を実行することにより、マッチングシステムは継続して「一致状態」に維持され、これは、システムがシステムに格納された全てのエンティティ間で一致するもの全てを常に認識していることを意味する。この特徴は、一致するエンティティがマッチングシステムにより受信された時にシステムがユーザのエンティティと一致する新しいエンティティに関してユーザに自動的に通知することを可能にする効果を有する。背景の節で説明した従来技術に係るマッチングシステムと比較すると、ユーザは、先の検索動作の実行後にユーザのエンティティと一致する新しいエンティティがマッチングシステムに提出されたかを調査するために、時間でトリガされる検索動作を実現するマッチングシステムの場合のように時間の決定された検索動作が次に行われることを待つ必要がないという点において、あるいはクリックによりトリガされる検索動作を実現するマッチングシステムの場合のように「一致検索ボタン」を再度押下する必要がないという点において利点を有する。システムの観点から、その特徴は、検索動作が前回実行されてから新しいエンティティがシステムにより受信されない限り、検索が行われる必要がないため、マッチングシステムにより必要とされる計算能力を低減するという点で利点を有する。従って、提案された原理は、既に検索されたエンティティに対して検索が重複して行われないことを保証する。上述した従来技術に係るマッチングシステムにおいて、検索動作が前回実行されてから新しいエンティティがシステムに提出されていないのに、検索動作、並びに従って時間及び計算能力を消費する索引の考察が実行される可能性がある。
【００１２】
第１のエンティティと一致するエンティティの検索及び第１のエンティティの索引付けは、マッチングシステムがマッチング動作毎に１度だけ索引を考察する必要があるように単一の動作で実行されるのが好ましい。これは、第１のエンティティが関連付けられる索引のインデックスポイント毎に、そのインデックスポイントと第１のエンティティとを関連付け且つそのインデックスポイントと関連付けられる他のエンティティを識別する情報を検索するようにマッチングシステムを構成することにより達成されてもよい。インデックスポイントとのエンティティの関連付けは、一般に、索引のそのインデックスポイントにエンティティを一意に識別するエンティティ識別パラメータを格納することにより達成される。従って、この場合、第１のエンティティが関連付けられるインデックスポイントに第１のエンティティのエンティティ識別パラメータを格納する時、既に格納されているエンティティ識別パラメータは追加のコストなしで同時に検索可能である。一般にマッチングシステムの索引が複雑なデータ構造に膨大なデータを格納するため、索引の１回の考察で索引付け及び検索の双方を実行する特徴により、マッチングシステムにより必要とされる計算能力が低減され且つ／又は各マッチング動作を実行するのに必要な時間、すなわち新しいエンティティの索引付け及び新しいエンティティに一致するエンティティの検索に必要な時間が短縮される。
【００１３】
本発明に係るマッチングシステムの更に有利な特徴については、以下の詳細な説明及び添付の請求の範囲において説明する。
【００１４】
更に本発明は、第１のユーザのクライアントデバイスから受信された第１のエンティティが、各エンティティが１つ以上のインデックスポイントと関連付けられる索引において索引付けされた複数のエンティティのうち少なくとも１つと一致するかを判定する請求項９に記載されるような方法、並びにこの方法をサーバノードに実行させる請求項１７に記載されるようなコンピュータプログラムに関する。また、本発明は、コンピュータプログラムが格納された記憶媒体を含むコンピュータプログラム製品に関する。
【００１５】
本発明の目的、利点及び効果、並びに特徴は、添付の図面と共に以下の本発明の例示的な実施形態の詳細な説明を読むことにより更に容易に理解されるだろう。
【図面の簡単な説明】
【００１６】
【図１】図１は、システムにより受信されたエンティティが先に受信されたエンティティと一致するかを判定する例示的なマッチングシステムを示す図である。
【図２】図２は、マッチング動作が従来技術に係る一般的なマッチングシステムにより実行される方法を示す図である。
【図３】図３は、図１のマッチングシステムにより実行される例示的なマッチング動作を示す図である。
【図４】図４は、図１のマッチングシステムにより達成される利点のうちの１つを示すマッチングの例を示す図である。
【図５】図５は、図３に示したマッチング動作の実行方法のより詳細な例を概略的に示す図である。
【図６】図６は、図１のマッチングシステムの種々の構成要素が図５に示したようなマッチング動作中に互いに通信するように構成される方法を示す信号フロー図である。
【図７】図７は、図１のマッチングシステムの索引に対して使用されてもよい例示的な索引データ構造を示す図である。
【図８】図８は、データが図７に示したように構造化される索引を使用する時に組み合わせ検索／索引付け動作が図１のマッチングシステムにより実行される方法を示すフローチャートである。
【図９】図９は、データが図７に示したように構造化される索引を使用する時に組み合わせ検索／索引付け動作がマッチングシステムにより実行される方法を示す信号フロー図である。
【発明を実施するための形態】
【００１７】
本発明は、種々の変形例及び別の構成を範囲に含むが、本発明の実施形態を図に示し以下に詳細に説明する。しかし、特定の説明及び図面は、本発明を開示される特定の形態に限定することを意図しないことが理解されるだろう。これに対して、請求される本発明の範囲は、添付の請求の範囲に表されるような発明の範囲内に入る全ての変形例及び別の構成を含むことが意図される。
【００１８】
図１は、本発明に係る例示的なマッチングシステム１を示す。マッチングシステム１は、異なるユーザ１３Ａ、１３Ｂのクライアントデバイス１５Ａ、１５Ｂから受信されたエンティティ１７Ａ、１７Ｂが互いに一致するかを判定するように構成される。マッチングシステム１は、ウェブサーバ３、アプリケーションサーバ５及びデータベースサーバ１１を含み、それらは図中に双方向の矢印で示されるようにデータをやり取りするために通信可能に接続される。
【００１９】
一般にユーザ１３Ａ、１３Ｂは、自身のクライアントデバイス１５Ａ、１５Ｂにおいてウェブブラウザを介しインターネットを通してマッチングシステム１によりホストされるマッチングサービスにアクセスする。ウェブサーバ３は、クライアントデバイス１５Ａ、１５Ｂとの通信を処理し且つ満足のいく機能ユーザインタフェースをレンダリングする役割を果たす。一般にこれは、ＸＨＴＭＬ（拡張ハイパーテキストマークアップ言語）／ＨＴＭＬウェブページを構成し且つクライアントデバイス１５Ａ、１５Ｂに配布することにより達成される。
【００２０】
アプリケーションサーバ５は、ソフトウェアにより実現されたマッチングサービスを実行する役割を果たすシステムの一部である。アプリケーションサーバ５は、以下においてマッチングエンジン７と呼ばれるマッチング機能を含み、マッチング機能は、１つ又はいくつかのクライアントデバイス１３Ａ、１３Ｂから受信されたエンティティ１７Ａ、１７Ｂが互いに一致するかを判定するのに必要な全ての機能性を含む。ここで、マッチングエンジン７は、アプリケーションサーバ５のハードディスクドライブ、ＲＯＭ（読み出し専用メモリ）、フラッシュメモリ又はＥＥＰＲＯＭ（電気的消去可能プログラマブル読み出し専用メモリ）等のコンピュータ可読媒体８に格納されるコンピュータプログラムとして実現される。コンピュータプログラム６がアプリケーションサーバ５のプロセッサで実行される場合、本発明に係るマッチング動作をアプリケーションサーバ５に実行させる。マッチング動作については以下に更に詳細に説明する。アプリケーションサーバ５は、例えばＪａｖａＥＥ（Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ）アプリケーションサーバであってもよい。
【００２１】
データベースサーバ１１は、ＳＱＬ（構造化照会言語）データベース等のデータベース１２を含み、マッチングシステム１により受信された全てのエンティティを格納する。新しいエンティティは、データベース１２に格納された場合、そのエンティティを一意に識別するエンティティ識別パラメータ１９Ａ、１９Ｂが割り当てられる。データベース１２はエンティティ記憶装置として機能し、エンティティ識別パラメータ１９Ａ、１９Ｂはエンティティ記憶装置のエンティティを見つけるためのキーである。エンティティ識別パラメータ１９Ａ、１９Ｂは、以下においてエンティティＩＤと呼ばれる。
【００２２】
アプリケーションサーバ５は、全てのエンティティ１７Ａ、１７Ｂが一致するエンティティの検索を助長するために索引付けされるマッチングエンジン索引２３を更に含む。索引データが構造化及び格納される方法は、種々のシステム設計因子を満たすように変更されてもよい。例えば索引データは、順序木データ構造（「トライ(trie)」と呼ばれることもある）、２分木データ構造、ハッシュテーブル又は分散ハッシュテーブルで構造化されてもよい。この例示的な実施形態において、エンティティ１９Ａ、１９Ｂはテキスト列であり、索引２３は、各単語を含むエンティティ１７Ａ、１７ＢのエンティティＩＤ１９Ａ、１９Ｂのリストを格納するものとして示される。一般的なマッチングエンジン索引において、各エンティティは１つ以上のインデックスポイントと関連付けられる。あるエンティティ及び別のエンティティが少なくとも１つの共通のインデックスポイントを有する場合、すなわち双方が少なくとも１つの共通のインデックスポイントと関連付けられる場合、それらのエンティティは少なくともある程度一致すると言われる。この例示的な索引において、各単語２１は索引２３のインデックスポイントに対応する。本実施形態の索引２３はアプリケーションサーバ５の記憶手段８に格納されるが、索引は、別個の「索引データベースサーバ」（不図示）又はデータベースサーバ１１等のマッチングシステム１の別のノード、あるいはアプリケーションサーバ５のキャッシュメモリに格納されてもよい。使用される索引の種類及び索引の格納方法は、本発明に係るマッチングシステム１の限定的な特徴として解釈されるべきではない。
【００２３】
図示したマッチングシステムアーキテクチャは単なる例示であり、マッチングシステム１は多くの他の方法で実現可能であることが理解されるべきである。例えばウェブサーバ３及び／又はデータベースサーバ１１は、マッチングシステム１全体が単一のサーバノード内に常駐するようにアプリケーションサーバ５に含まれてもよく、クライアントデバイス１３Ａ、１３Ｂは、ウェブサーバ３を介してアプリケーションサーバ５と通信する代わりに例えばＪａｖａＭＥ（Ｍｉｃｒｏ  Ｅｄｉｔｉｏｎ）アプリケーションを介してアプリケーションサーバ５と直接通信してもよい。
【００２４】
図２は、マッチング動作が従来技術に係る一般的なマッチングシステムにより実行される方法を示す。
【００２５】
第１のステップＳ２０１において、ユーザは、以下において新しいエンティティと呼ばれるエンティティをクライアントデバイスからマッチングシステムに送出する。マッチングシステムは、新しいエンティティを受信すると、ステップＳ２０２においてマッチングシステムのデータ構造に新しいエンティティを挿入することを開始する。ステップＳ２０３において、新しいエンティティを索引付けし且つ一般には更に格納することを含む挿入動作が実行される。索引付けは、マッチングシステムの索引を考察し且つ新しいエンティティを１つ以上のインデックスポイントと関連付けることにより実行され、その新しいエンティティが他のユーザにより検索できるようにする。ステップＳ２０４において、マッチングシステムは、データ構造への新しいエンティティの挿入が成功したことを通知される。その後ある時点で、新しいエンティティと一致するエンティティを検索するようにマッチングシステムをトリガする事象(イベント)が起こる。背景の節で説明したように、一致するエンティティの検索を開始するそのような事象は、一致トリガ事象(matching triggering event)と呼ばれてもよい。従来のマッチングシステムにおいて、検索は所定のある時点で開始されてもよく、この場合、一般に一致トリガ事象はマッチングシステムをホストするサーバで実行されているタイマの満了に対応する。ＴT（「タイマによるトリガ」を表す）により示された円は、そのような一致トリガ事象の発生を示す。従来技術に係る他のマッチングシステムにおいて、検索は、ウェブブラウザにおいてユーザに対して表示された「一致検索ボタン」をクリックすることによりエンティティを送出したユーザにより開始されてもよい。ＴC（「クリックによるトリガ」を表す）により示された円は、そのようなクリックの発生及び従って別の種類の一致トリガ事象の発生を示す。一致トリガ事象ＴT、ＴCが発生すると、ステップＳ２０５において、システムは新しいエンティティと一致するエンティティの検索を開始する。ステップＳ２０６において、検索は新しいエンティティと一致するエンティティを追跡するために索引を再度考察することにより実行される。ステップＳ２０７において、一致するエンティティ又は少なくとも一致するエンティティを識別可能にする情報がマッチングシステムにより検索され、ステップＳ２０８において一致するエンティティはユーザのクライアントデバイスに送出される。
【００２６】
マッチング動作は、２つの別個のサブ動作、すなわちステップＳ２０３の挿入動作及びステップＳ２０６の検索動作を含むものとして示される。一般に挿入動作は、新しいエンティティが受信されると実行され、検索動作は一致トリガ事象ＴT、ＴCにより開始される後の段階で実行される。これは、新しいエンティティをマッチングシステムに送出するユーザが入手可能な一致するエンティティの有無を調査する前に一致トリガ事象が起こるのを待つ必要があり、マッチングシステムが新しいエンティティの挿入と一致トリガ事象の発生との間では「不一致状態である」ことを意味する。この状態は、マッチングシステムが新しいエンティティとマッチングシステムに格納された他のエンティティとの間で潜在的に一致するものをいずれも認識できないことを意味する。
【００２７】
図３は、マッチング動作が本発明に係るマッチングシステム１により実行される方法の一例を示す。
【００２８】
ここで、ステップＳ３０１において、クライアントデバイスから送出された新しいエンティティはマッチングシステムにより受信される。マッチングシステムは、新しいエンティティの受信を一致トリガ事象として解釈し、新しいエンティティの受信時に一致するエンティティの検索を開始するように構成される。一致するエンティティの検索が新しいエンティティの受信時に開始されることは、受信と検索との間にマッチングシステムにより行われる中間動作がないことを必ずしも意味するわけではなく、受信が検索動作を１つの動作として含む一連の動作を実行するようにマッチングシステムをトリガすることを単に意味する。従って、マッチングシステムが検索を開始するために、新しいエンティティの受信以外の事象が起こる必要はない。ここで、一致トリガ事象は、ＴR（「受信によるトリガ」を表す）で示された破線の円により図示される。本実施形態において、マッチングシステムは、ステップＳ３０２で組み合わせ挿入／検索動作を開始する。これについては以下に更に詳細に説明する。ステップＳ３０３において、データ構造への新しいエンティティの挿入及び新しいエンティティに一致するエンティティの検索の双方が実行される。ステップＳ３０４において、一致するエンティティがマッチングシステムにより検索され、ステップＳ３０５において、一致するエンティティは新しいエンティティをマッチングシステムにアップロードしたユーザのクライアントデバイスに送出される。新しいエンティティの受信時に検索を実行することにより、マッチングシステムは継続して一致状態に維持される。
【００２９】
図４は、新しいエンティティの受信時に一致するエンティティの検索を開始するように構成されたマッチングシステムにより達成される利点のうちの１つを示す例を示す。ここで、第１のステップＳ４０１において、マッチングシステムは、第１のユーザのクライアントデバイスから第１のエンティティを受信する。ステップＳ４０２において、マッチングシステムは、第１のエンティティを索引付けし且つ一般には更に格納することによりマッチングシステムのデータ構造に第１のエンティティを挿入し、一致するエンティティを検索する。図２に示した例のように、挿入及び検索は共通の動作で実行される。ステップＳ４０３において、マッチングシステムは、この例示的な例においては否定で示される検索結果を第１のユーザに通知する。ここで、マッチングシステムが従来技術に係るマッチングシステムであった場合、図中で検索動作を示す×印をつけた矢印により示されるように、新しいエンティティがシステムに提出されていないが重複した検索が実行された可能性がある。しかし、提案したマッチング動作により、新しいエンティティがマッチングシステムにより受信されるまで検索は繰り返されない。これは、第２のエンティティが第２のユーザのクライアントデバイスからマッチングシステムに送出されるステップＳ４０４で実行されるように示される。第２のエンティティの受信により、ステップＳ４０５で実行される新しい検索がトリガされる。この例示的な例において、第１のエンティティは第２のエンティティと一致すると仮定され、その結果、ステップＳ４０６Ａ及びＳ４０６Ｂにおいて、マッチングシステムは、第２のエンティティを第１のユーザに送出し且つ第１のエンティティを第２のユーザに送出することによりユーザのそれぞれのエンティティに一致するものが見つけられたことを第１のユーザ及び第２のユーザの双方に通知する。従って、提案したマッチング動作を実現するように構成されたマッチングシステムは、重複した検索が実行されないため計算能力を節約でき、マッチングシステムが使用されるサービスのユーザは、自身のエンティティと一致する新しいエンティティがマッチングシステムに提出されるとすぐに自動的に通知されるため既存の一致するもの関して通知されないことを心配する必要がない。
【００３０】
当然、マッチングシステムは、ステップＳ４０６Ａ及びＳ４０６Ｂにおいて各ユーザ（すなわち、各ユーザのクライアントデバイス）に一致するエンティティ自体を送出する必要はない。マッチングシステムは、一致するエンティティを識別する何らかの情報を各ユーザに送出するように構成される。例えば、マッチングシステムがオンラインデートサービスに使用される場合（この場合、エンティティは、例えばサービスを使用する人のユーザプロファイル又はユーザプロファイルの一部に対応してもよい）、ステップＳ４０６Ａ及びＳ４０６Ｂにおいて第１のユーザ及び第２のユーザのクライアントデバイスに送出された情報は、デートサービスをホストするウェブサイトの一致するユーザの「個人ページ」に対するＵＲＬ（ユニフォームリソースロケータ）であってもよい。あるいは、例えばステップＳ４０５で一致するものが見つけられた時に第１のユーザがデートサービスにログインしていない場合、マッチングシステムは、例えば第１のエンティティを第２のユーザに送出する一方で、新しく一致するものが見つけられ且つそれを添付のＵＲＬで閲覧できるという情報と共にＳＭＳメッセージ又は電子メールで第２のユーザの個人ページに対するＵＲＬを第１のユーザに送出するように構成される。別の実施形態によると、マッチングシステムは、ステップＳ４０５において一致するものが検出されると、第１のユーザ及び第２のユーザのユーザデバイスに何も送出しないように構成される。その代わり、マッチングシステムは一致するものをデータベース又はキャッシュメモリに格納するように構成され、ユーザが次にサービスにログインした時にそのデータベース又はキャッシュメモリから一致するものが検索され且つユーザに送出される。この場合、一致するものはユーザの個人ページ「ようこそ画面」等に表示されてもよい。
【００３１】
図３及び図４で示した例示的なマッチング動作において、挿入及び検索はステップＳ３０３並びにステップＳ４０２及びＳ４０５で実行された単一の動作に組み合わされたが、新しいエンティティの受信時に検索が開始される提案したマッチング動作は、図２に示したような従来技術に係るマッチング動作（ステップＳ２０３及びＳ２０６）で行われるように２つの別個のサブ動作で挿入及び検索を実行することにより行われてもよいことが理解されるべきである。検索動作が他の事象ではなく新しいエンティティの受信によりトリガされる限り、マッチングシステムは継続して一致状態で維持され、上述した利点の恩恵を受ける。
【００３２】
しかし、単一の動作で挿入及び検索を実行することは、マッチングシステムにより必要とされる計算能力が更に低減され且つ／又はマッチング動作を実行するのに必要な時間が短縮されるという点で利点を有する。次に、組み合わせ挿入／検索を採用するマッチング動作について図５を参照して説明する。
【００３３】
図５は、本発明に係るマッチング動作の更に詳細な例を概略的に示す。図５を説明する際、図１のマッチングシステム１を同時に参照する。
【００３４】
ステップＳ５０１  −  新しいエンティティの受信及び格納
新しいエンティティ１７Ａは、クライアントデバイス１５Ａ及び１５Ｂの一方からマッチングシステム１により受信される。この例において、エンティティ１７Ａは、「Ｂｌｕｅ  ｃａｒ」というテキスト列であり、テキスト列「Ｂｌｕｅ  ｃａｒ」を含む他のエンティティとマッチングされるべきである。マッチングシステム１は、新しいエンティティ１７Ａをデータベース１２に格納し、この時整数「６４」の形態のエンティティＩＤ１９Ａが割り当てられる。
【００３５】
ステップＳ５０２  −  エンティティの前処理
エンティティを索引付けする前に、テキスト列は前処理される必要がある場合がある。この例において、前処理は非常に単純な動作である。テキスト列の末尾の特殊文字「．」が除去され、テキスト列はテキスト列を形成するリスト２２又は単語シーケンスにトークン化され、全ての文字は大文字にされる。これは、プリプロセッサと呼ばれてもよいマッチングエンジン７の一部により達成される。前処理は、この例においては単純な動作であるが、はるかに複雑であり且つ同義語への置換及びステミング(stemming)等の特徴を含む可能性がある。更に、「ａ」、「ａｎ」、「ｔｈｅ」、「ａｎｄ」等のマッチングの観点からごく僅かな情報を保持する共通の単語を除去するステップを含んでもよい。
【００３６】
ステップＳ５０３  −  エンティティの索引付け及び一致するエンティティの検索
次に新しいエンティティ１７Ａを索引付けする。これは、エンティティを索引２３の１つ又はいくつかのインデックスポイント２１と関連付けることにより実行される。索引２３は、各々が索引２３のインデックスポイント２１に属する６つの「バスケット」を含むものとして示される。この例において、インデックスポイントはエンティティ記憶装置１２に格納されたエンティティ１７Ｂ内で発生する単語に対応する。各バスケット内の数字は、バスケットが属する単語を含むエンティティ１７ＢのエンティティＩＤ１９Ｂである。新しいエンティティ１７Ａは、それをリスト２２中の単語「ｂｌｕｅ」及び「ｃａｒ」に対応するインデックスポイントと関連付けることにより索引付けされる。これは、新しいエンティティ１７ＡのエンティティＩＤ１９Ａをそれらのバスケットに挿入することにより示される。バスケットに格納された他のエンティティＩＤは、新しいエンティティと一致すると考えられるエンティティのエンティティＩＤである。
【００３７】
通常、新しいエンティティを関連付けられる全てのインデックスポイントと関連付けた時、従来技術に係るマッチングシステムは、一般に新しいエンティティの挿入が成功したことを確認し且つ一致トリガ事象が起こるまで「アイドルモード」に戻る。一致トリガ事象が発生し且つ新しいエンティティと一致するエンティティの検索が実行される時、そのような従来技術に係るマッチングシステムは、新しいエンティティのエンティティＩＤが格納されるバスケットを見つけるために（比喩的に言うと）索引２３を再度考察し、同一バスケットに格納された他の全てのエンティティＩＤを検索する必要がある。しかし、本発明の１つの態様によると、新しいエンティティ１９ＡのエンティティＩＤ１７Ａが各「バスケット」に挿入されるのと同時に一致するエンティティのエンティティＩＤが検索される。新しいエンティティ１９ＡのエンティティＩＤ１７Ａが挿入されるべきバスケットを見つけるために索引２３が考察される必要があるため、一致するエンティティのエンティティＩＤの検索は追加のコストなしで達成される。
【００３８】
結論として、提案された原理により、新しいエンティティ１７Ａの索引付けの結果、一致するエンティティが検索される。換言すると、エンティティの索引付け及びそのエンティティに一致するエンティティの検索が索引２３の１回の考察で実行される。インデックスポイントとのエンティティの関連付けは、エンティティＩＤを「バスケット」に事実上配置することにより行われないことは言うまでもない。当業者には既知であるように、索引は多く種々の方法で設計され、エンティティを種々のインデックスポイントと関連付ける方法は索引の種類に依存する。上述した索引付け／検索動作は、検索エンジンと呼ばれてもよいマッチングエンジン７の一部により実行される。
【００３９】
ステップＳ５０４  −  一致するエンティティの評価
ステップＳ５０３で実行された組み合わせ索引付け／検索動作の結果、一致するエンティティを識別するエンティティＩＤのリスト２５が得られる。リスト２５は、新しいエンティティ１７Ａに対する未処理のマッチング結果を表すと考えられる。ある状況において、そのようなリストは非常に広範なものであり、マッチング結果が有用となる前に、リスト２５は評価処理で向上される必要がある。評価は、マッチングシステム１が完成した結果の集合２５から重要な部分を選別する方法である。通常、最も関連性の低い一致するエンティティが除去され、残りが関連性により順序付けされる。
【００４０】
評価を実現する最も基本的な方法は、マッチングされたエンティティ１７Ａが一致する各エンティティと共通に有するインデックスポイント２１の数をカウントすることである。この例示的な例において、エンティティＩＤ「１６」を有するエンティティは、「１６」がリスト２５で２回発生するため新しいエンティティ１７Ａと共通のインデックスポイントを２つ有し、エンティティＩＤ「３２」を有するエンティティ及び新しいエンティティ１７Ａは共通のインデックスポイント２１を１つだけ有する。従って、マッチングシステム１は、エンティティＩＤ「１６」のエンティティをエンティティＩＤ「３２」のエンティティより高く評価するように構成される。
【００４１】
評価を実現する別の単純で一般的な方法は、いわゆる逆出現頻度の方法を使用することである。基本的にこの方法は、珍しい単語を一般的な単語より高く評価する。その結果、共通の珍しい単語を含む２つのエンティティは、頻繁に発生する共通の単語を有する２つのエンティティより一致すると考えられる。これは、従来の検索アプリケーションにおける一般的な評価方法である。逆出現頻度の方法により２つのエンティティ間の関係を評価するために、２つのエンティティの共通の単語が既知であると仮定される。システムにおける単語の合計数を認識していることが前提条件である。逆出現頻度は、以下の公式により単語毎に計算される。
【００４２】
【数１】
0005389186.tif 000002
式中、ｗtは単語の重みであり、Ｎはシステムにおけるエンティティの合計数であり、ｆtは単語を含むシステムにおけるエンティティ数である。これは、一致するエンティティを評価する最適な方法でないことは言うまでもない。高機能化のためにその評価に対して多くの改善を行える。しかし、これは場合によっては十分に適切な解決策である。別の処理しにくいタスクは、一致するエンティティと考えるべきものか考えるべきでないものかを判定する方法である。一般にこれは、マッチングシステムの精度に関する要件に依存する。
【００４３】
検索中に見つけられた一致するエンティティを評価する多くの方法が従来技術において既知である。上述した２つの原理は、別個に使用されてもよく、あるいは互いに組み合わされて及び／又は未処理のマッチング結果リスト２５のエンティティＩＤにより識別された各エンティティが新しいエンティティ１７Ａと一致する程度を記述する評価を取得する他の既知の評価原理と組み合わされて使用されてもよい。マッチングシステム１は、評価に基づいてリスト２５をソートし且つ最も関連性の低い一致するエンティティを除去するように構成される。上述した評価動作は、一致評価器と呼ばれてもよいマッチングエンジン７の一部により実行される。
【００４４】
この例示的な例において、評価の結果（向上されたマッチング結果）は、エンティティＩＤ「１６」のみを含む「リスト」２７である。この時点において、マッチングシステム１は、新しいエンティティ１７Ａをマッチングシステムに提出したユーザ及びエンティティＩＤ「１６」を有する古いエンティティを提出したユーザの双方に対して、各エンティティに対して一致するものが見つけられたことを通知するように構成される。更にマッチングシステム１は、マッチングシステム１により格納された全ての一致するエンティティを保持し且つ追跡する内部又は外部レコードを更新するように構成される。
【００４５】
新しいエンティティ１７Ａと共通のインデックスポイントを少なくとも１つ有するあらゆるエンティティは最初はマッチングシステム１により新しいエンティティと一致するものと考えられるが、一般にこれらの「一致するもの」の多くは評価処理中に「不一致」として無視されることが理解されるべきである。上述したように、評価処理は、非常に複雑であり且つ一致するものの全て（未処理）の集合から関連する（向上された）一致するものを検索する１つ又はいくつかの評価機能を使用できる。評価機能は対称的又は少なくとも可能な限り対称的になるように選択されるのが好ましく、これは、「古い」エンティティが新しいエンティティに一致すると考えられる場合に新しいエンティティが「古い」エンティティに一致すると考えられるべきであることを意味する。
【００４６】
図６は、図１のマッチングシステム１の種々の構成要素がマッチング動作中に互いに通信するように構成される方法を示す信号フロー図である。信号フロー図を説明する際、図１のマッチングシステムを同時に参照する。
【００４７】
ステップＳ６０１：テキスト列を含むｐｏｓｔパラメータを含むＨＴＴＰ  ＰＯＳＴ要求が、クライアントデバイス１５Ａ、１５Ｂのウェブブラウザからマッチングシステム１のウェブサーバ３に送出される。マッチングシステム１が使用されるマッチングサービスの種類に依存して、テキスト列は、例えばデートサービスに対するユーザプロファイル、電子商取引サービスに対する商業広告、採用／就職サービスに対するＣＶ又はマッチングシステム１がマッチングすべき他のものであってもよい。
【００４８】
ステップＳ６０２：ウェブサーバ３は、方法の呼び出しの文字列パラメータであるｐｏｓｔパラメータをマッチングシステムのアプリケーションサーバ５に転送する。
【００４９】
ステップＳ６０３：アプリケーションサーバ５は文字列をデータベース１２に送出する。
【００５０】
ステップＳ６０４：データベース１２は、その文字列をエンティティ１７Ａとして格納し、エンティティに対してエンティティＩＤ１９Ａを生成する。
【００５１】
ステップＳ６０５：エンティティＩＤはアプリケーションサーバ５に返される。
【００５２】
ステップＳ６０６：アプリケーションサーバ５は、エンティティコンテンツ（この例においては、テキスト列）及びエンティティＩＤによりマッチングエンジン７を呼び出す。ここで、マッチングエンジン７は、内部及び外部通信を処理するマッチングエンジン（ＭＥ）インタフェース７Ａを含む。このステップは、アプリケーションサーバ５がステップＳ６０２で受信した新しいエンティティと一致するエンティティの検索を開始するためにマッチングエンジン７を呼び出すステップである（この例示的な実施形態において、検索は新しいエンティティの索引付け中に実行される）。アプリケーションサーバ５によりマッチングエンジン７に対して行われる方法の呼び出しは、ステップＳ６０２における新しいエンティティの受信によりトリガされる。これは、ステップＳ６０２においてエンティティを受信すると、マッチングシステム１が実行する一連の動作をトリガすることを意味する。そのうちの１つの動作は、新しく受信したエンティティと一致するエンティティの検索である。
【００５３】
ステップＳ６０７：マッチングエンジンインタフェース７Ａは、コンテンツを前処理するためのエンティティコンテンツによりマッチングエンジン７のプリプロセッサ７Ｂを呼び出す。
【００５４】
ステップＳ６０８：プリプロセッサは、エンティティコンテンツを処理する。上述したように、前処理は複雑な動作である可能性がある。テキストエンティティを処理する時、このステップの最も重要な部分の１つはテキストを単語にセグメント化／トークン化することである。
【００５５】
ステップＳ６０９：プリプロセッサ７Ｂは、各々がエンティティコンテンツの単語に対応する複数の文字列の配列を返す。文字列／単語の配列は図５のリスト２２に対応する。
【００５６】
ステップＳ６１０：マッチングエンジン７のインタフェース７Ａは、先行ステップでプリプロセッサ７Ｂから受信した単語の配列及び新しいエンティティ１７ＡのエンティティＩＤにより検索エンジン７Ｃを呼び出す。
【００５７】
ステップＳ６１１：検索エンジン７Ｃは、単語の配列に索引付けを行い、全ての潜在的に一致するエンティティを検索する。
【００５８】
ステップＳ６１２：検索エンジン７Ｃは、ステップＳ６１０で検索エンジンに提出された単語の配列内の各単語に対するエントリを有する未処理のマッチング結果リスト（図５のリスト２５に対応する）を返す。単語毎に、その単語に一致する全てのエンティティのエンティティＩＤを含むサブリスト（図５において２５で示されたリストの「リスト」｛１６｝、｛１６，３２｝に対応する）が未処理のマッチング結果リストに添付される。
【００５９】
ステップＳ６１３：マッチングエンジン７により実行された最後のステップは、検索エンジン７Ｃにより取得された結果を評価することである。従って、先行ステップで検索エンジン７Ｃから返された未処理のマッチング結果リストは、マッチングエンジン７の一致評価器７Ｄに転送される。
【００６０】
ステップＳ６１４：一致評価器７Ｄは、未処理のマッチング結果リストのエンティティ毎に評価を計算する。評価が低すぎる場合、エンティティは一致するものとは考えられず、リストから除去される。一般に一致評価器は、残りの一致するエンティティのリストのエンティティＩＤの複製を除去し、評価に基づいて残りの一致するエンティティをソートする。その結果として、図５において２７で示したリスト等の向上されたマッチング結果リストが得られる。
【００６１】
ステップＳ６１５：一致評価器７Ｄは、向上されたマッチング結果リストを返す。このリストは、評価に基づいてソートされた一致するエンティティのエンティティＩＤのリストであってもよく、あるいは一致する各エンティティに対する評価が返され且つ後で処理において使用されるようにエンティティＩＤ及び評価パラメータの対のリストであってもよい。
【００６２】
ステップＳ６１６：検索エンジン７のインタフェース７Ａは、向上されたマッチング結果リストをアプリケーションサーバ５に返す。
【００６３】
ステップＳ６１７：アプリケーションサーバは、向上されたマッチング結果リストに含まれたエンティティＩＤによりデータベース１２を呼び出す。
【００６４】
ステップＳ６１８：データベース１２は、エンティティＩＤが向上されたマッチング結果リストすなわち全ての一致するエンティティのリストに含まれていたエンティティを含むリストを返す。
【００６５】
ステップＳ６１９：アプリケーションサーバ５は、各エンティティの評価と共に全ての一致するエンティティのリストをウェブサーバ３に返す。
【００６６】
ステップＳ６２０：ウェブサーバ３は、結果（すなわち、一致するエンティティ及びそれに加えて各エンティティの評価を提示する）を提示するＸＨＴＭＬ／ＨＴＭＬ文書を構築する。
【００６７】
ステップＳ６２１：ＸＨＴＭＬ／ＨＴＭＬ文書は、ステップＳ６０１のＨＴＴＰ  ＰＯＳＴ要求を発信したクライアントデバイス１３Ａ、１３Ｂのウェブブラウザに対してＨＴＴＰ応答で送出される。
【００６８】
図７は、本発明に係るマッチングシステム１のマッチングエンジン索引２３のデータが構造化される方法を示す図である。この例示的な例において、マッチングシステム１によりマッチングされるエンティティはテキスト列であると仮定される。ここで、索引データは、上述したように「トライ」と呼ばれることもある順序木データ構造で構造化されるものとして示される。従って、マッチングエンジン索引２３は、この例示的な例において、トライ又は木構造索引２３Ａと考えられる。テキストエンティティのいずれかにおいて発生する単語を形成する文字シーケンス２９は、枝のルートノード(branch root node)３１と単語末尾ノード(word-end node)３３との間の枝又は枝の一部３５を形成する。コンピュータ科学用語を使用すると、文字シーケンス２９は結合したｃｈａｒ配列を構成すると考えられる。枝の各ルートノード３１は、木構造のルートノード（ツリールートノード）の子ノードであり、一意の文字又は数字に対応する。例示するために、２つの枝のルートノード３１（文字「Ａ」及び「Ｂ」に対応する）及びシステムのエンティティ内に発生すると仮定される例示的な単語のみを図に示す。図中の全ての単語末尾ノード３３は破線の楕円で示され、単語末尾ノードの各々は、インデックスポイント／単語末尾ノード２１／３３の各々が枝のルートノード３１から単語末尾ノード３３に対する文字シーケンス２９により形成された単語を含む全てのエンティティと関連付けられるため木構造索引２３Ａのインデックスポイント２１Ａである。すなわち、木構造索引２３Ａのインデックスポイント２１が単一文字ノード３３であるが、各インデックスポイント２１はそのノード３３で終了する枝又は枝の部分２９により形成された単語に対応する。論理的な木構造に従って順序付けされたデータを有する木構造索引２３Ａは、エンティティ全体で発生する全ての固有の単語を格納する索引と比較すると、格納される必要がある文字数及び要求されるシステムのメモリ空間が減少されるという点で利点を有する。木構造索引２３Ａは、例えばマッチングシステムのアプリケーションサーバ５等のノードのキャッシュメモリ及び索引データベースに格納される。一般に木構造索引２３Ａは、木構造の各ノードの全ての子ノードを指し示すポインタと共に各ノードを格納することにより格納される。換言すると、各ノードは、そのノードの全ての子ノードを含む子リストと関連付けられるように格納される。
【００６９】
当然、上述した木構造に従って索引データを構造化する原理は、数字及び結合された記号シーケンスにより形成される他のあらゆる情報に対しても適用可能である。例えば木構造は、数字シーケンスにより形成される枝、あるいはコンピュータ科学用語を使用すると結合した整数配列を含む。結合した整数配列は、数字の第１の桁に対応する枝のルートノードと数字の最後の桁に対応する数字末尾ノードとの間で相関して順序付けされる。単語を使用した例と同様に、そのような枝のルートノードと数字末尾ノードとの間で形成された数字に対応する数字を含むテキストエンティティは、木構造索引２３Ａのインデックスポイントとなる数字末尾ノードと関連付けられる。記号シーケンスが単語又は数字を形成する必要がないため、シーケンス末尾ノード３３という用語は、単語末尾ノード、数字末尾ノード又はエンティティ内で見つけられた記号シーケンスの最後の記号に対応するあらゆる他の木構造索引ノードに対して使用されてもよい。
【００７０】
図８は、マッチングシステム１の索引２３が図７において２３Ａで示された木構造索引等の木構造索引である場合に組み合わせ検索／索引付け動作が図１及び図５のエンティティ１７Ａ等の新しいエンティティに対して実行される方法を示すフローチャートである。
【００７１】
ここでも、エンティティはテキスト列であると仮定され、新しいエンティティ１７Ａは、テキスト列がテキストを形成する単語シーケンス２２にトークン化されるようにマッチングエンジン７のプリプロセッサ７Ｂにより前処理されると仮定される。一般に、フローチャートに示した方法のステップは、本明細書において検索エンジン７Ｃと呼ばれるマッチングエンジン７の一部により実行される。
【００７２】
ステップＳ８０１：テキスト列の第１の単語が検索される。
【００７３】
ステップＳ８０２：木構造の「現在処理中のノード」がツリールートノードに設定される。
【００７４】
ステップＳ８０３：単語の次の文字が検索される。
【００７５】
ステップＳ８０４：現在のノードが子ノードを有するかのチェックが実行される。現在のノードの子ノードが存在する場合はステップＳ８０７に進み、存在しない場合はステップＳ８０５に進む。
【００７６】
ステップＳ８０５：現在処理中の文字に対応する子ノードが作成される。
【００７７】
ステップＳ８０６：子ノードが現在のノードの子リストに格納される。
【００７８】
ステップＳ８０７：木構造の「現在処理中のノード」が子ノードに設定される。
【００７９】
ステップＳ８０８：現在処理中の単語が更なる文字を含むかのチェックが実行される。更なる文字が単語にある場合はステップＳ８０３に進み、ない場合はステップＳ８０９に進む。
【００８０】
ステップＳ８０９：現在処理中の文字が現在処理中の単語の最後の文字であるため単語末尾ノード３３である現在処理中のノードに対して、新しいエンティティ１７ＡのエンティティＩＤ１９Ａが挿入される。エンティティＩＤ１９Ａが現在処理中のノードに挿入されるということは、新しいエンティティ１７ＡのエンティティＩＤ１９Ａが現在処理中のノードと関連付けられるように索引記憶装置（データベース又はキャッシュメモリ）に格納されることを意味する。同時に、そのノードと関連付けられた他の全てのエンティティＩＤ（ある場合）は索引記憶装置から検索される。１つ又はいくつかのエンティティとまだ関連付けられていない場合、この時点で、現在処理中のノードは新しいエンティティ１７Ａと関連付けられることによりインデックスポイント２１Ａとなる。
【００８１】
ステップＳ８１０：テキスト列が現在処理中の単語の他に更なる単語を含むかのチェックが実行される。テキスト列に更なる単語が存在する場合はステップＳ８０１に戻り、ない場合は方法は終了し、ステップＳ８０９で検索されたエンティティＩＤ（テキスト列の各単語に対する）は図６を参照して説明されたようにマッチングエンジン７の一致評価器７Ｄに転送されてもよい。
【００８２】
図９は、マッチングシステムの索引２３が図７において２３で示される木構造索引等の木構造索引である場合に図６のステップＳ６１１で検索エンジン７Ｃにより実行されたサブステップを示す信号フロー図である。
【００８３】
ここでも、新しいエンティティは図１及び図５のエンティティ１７Ａであると仮定され、「ｂｌｕｅ  ｃａｒ」というテキスト列である。また、プリプロセッサ７Ｂ（図６を参照）は、特殊文字「．」を除去し、テキスト列を単語のリスト２２にトークン化したと仮定される。
【００８４】
ステップ９０１：検索エンジン７Ｃにより実行された索引付け／検索動作は、新しいエンティティ１７ＡのエンティティＩＤ１９Ａ及び文字列の配列２２（｛「ｂｌｕｅ」，「ｃａｒ」｝）により呼び出される。ここで、各文字列はテキスト列の単語に対応する。
【００８５】
その後に続くＳ９０２〜Ｓ９１３で示されるステップは、文字列の配列２２の各文字列に対して実行される。すなわち、この例においては文字列「ｂｌｕｅ」及び「ｃａｒ」に対して実行される。
【００８６】
ステップＳ９０２：文字列／単語は、例えば｛「ｂ」，「ｌ」，「ｕ」，「ｅ」｝である文字の配列にトークン化される。
【００８７】
ステップＳ９０３：新しく作成された文字の配列は、新しいエンティティ１７ＡのエンティティＩＤ１９Ａと共に索引２３、２３Ａに更に送出される。
【００８８】
ステップＳ９０４〜Ｓ９０７：索引２３、２３Ａは、文字の配列に基づいて考察される。図８のステップＳ８０５及びＳ８０６で示されるように、文字シーケンスに対応し且つ木構造に先に存在していなかったあらゆるノードが作成され且つ格納される。
【００８９】
ステップＳ９０８：新しいエンティティ１７ＡのエンティティＩＤ１９Ａは、新しいエンティティ１７Ａのインデックスポイント２１Ａとなる文字「ｅ」に対応する単語末尾ノード３３に格納される。それと同時に、そのノード３３に先に格納され且つ新しいエンティティ１７Ａと一致するエンティティのエンティティＩＤであるあらゆるエンティティＩＤが検索される。
【００９０】
ステップＳ９０９〜ステップＳ９１３：ステップＳ９０８で検索されたエンティティＩＤを含むリストが木構造のノードを介して検索エンジン７Ｃに再帰的に返される。
【００９１】
ステップＳ９１４：新しいテキストエンティティ１７Ａの全ての単語に対してステップＳ９０８で検索されたエンティティＩＤのリストが図５の未処理のマッチング結果リスト２５に対応する統合リストに結合される。従って、この例示的な例において、統合リストは単語「ｂｌｕｅ」及び「ｃａｒ」を含む全てのエンティティのエンティティＩＤを含む。
【００９２】
ステップＳ９１５：ステップＳ９１４で作成された統合リストが返される。一般に図６に示すように、検索エンジン７Ｃは、統合リストを入力パラメータとして一致評価器７Ｄを呼び出す。
【００９３】
新しいエンティティの索引付け及び新しいエンティティと一致するエンティティの検索を単一の動作で実行する本明細書で説明した原理は、各インデックスポイント２１、２１Ａが複数のエンティティ１７Ａ、１７Ｂと関連付けられる索引２３、２３Ａを使用してあらゆる種類のマッチングシステムにおいて適用可能である。各インデックスポイント２１、２１Ａは、新しいエンティティがそのインデックスポイントと関連付けられた時にそのインデックスポイントが対応する特性を有する全てのエンティティが検索されるように、その特性を有する全てのエンティティと関連付けられるのが最も好ましい。
【００９４】
上記例において、エンティティ１７Ａ、１７Ｂはテキスト列であり、索引２３、２３Ａの各インデックスポイント２１、２１Ａはいずれかのテキスト列内で発生する単語に対応する。従って、それらの例において、インデックスポイント２１、２１Ａは、例えば単語「ｂｌｕｅ」を含むという特性であるマッチングされるエンティティの「意味特性(semantic property)」に対応すると考えられる。しかし、索引はあらゆる可能なエンティティ特性を反映できることが理解されるべきである。例えばエンティティがテキスト列である例において、マッチングシステム１は、各エンティティの文字数をカウントするように構成されてもよく、索引は文字数又は文字数の間隔に対応するインデックスポイントを含んでもよい。更にマッチングシステム１は、エンティティの文脈を解析する論理を含むことができ、この時、索引のインデックスポイントはエンティティの文脈を記述する単語又は句に対応してもよい。索引２３、２３Ａは、これらの種類のインデックスポイントの組み合わせを更に含んでもよいことは言うまでもない。
【００９５】
更に、一般に索引２３、２３Ａは単語の特性を反映することによりエンティティを索引付けするように構成されるが、エンティティ自体は単語を含む必要がない。例えばマッチングシステム１は、写真マッチングサービス又はオーディオトラックマッチングサービスに使用され、その場合、クライアントデバイス１３Ａ、１３Ｂから送出されたエンティティはそれぞれ写真及びオーディオトラックである。写真マッチングに使用される場合、マッチングシステム１は、画像（エンティティを構成するデジタル画像ファイルのデータにより与えられる）の「視覚特性」を、索引２３、２３Ａのインデックスポイントを構成できる単語又は数字に変換する画像認識ソフトウェアを含むことができる。例えば画像認識ソフトウェアは、例えば画像のオブジェクトの形状を解析することにより画像に描写されたオブジェクトを判定する機能性を含むことができ、各々がルックアップテーブル中の形状を記述する単語と関連付けられた事前に格納された形状とそれらの形状を比較できる。また、画像認識ソフトウェアは、画像又は画像中の特定のオブジェクトの最も目立つ色をデジタルカラー解析により判定するように構成される。それにより、画像認識ソフトウェアは画像を解析でき、例えば画像が青い自動車を描写することを判定できる。この場合、画像認識ソフトウェアは、「ｂｌｕｅ  ｃａｒ」というテキスト列又は｛「ｂｌｕｅ」，「ｃａｒ」｝という図５の文字列配列２２等の既にセグメント化されたテキスト列をマッチングエンジン７に提供でき、この時、マッチングエンジン７は、上述したように索引２３、２３Ａにおいて単語「ｂｌｕｅ」及び「ｃａｒ」に対応するインデックスポイントと画像エンティティとを関連付けられる。従って、この場合、索引２３、２３Ａの単語は、エンティティ内で発生する単語に対応するのではなく、他のエンティティ特性を反映することによりエンティティを記述する単語に対応する。同様に、マッチングシステム１はオーディオトラックをマッチングするために使用され、この場合、マッチングシステムは波形認識技術を使用して且つ／又はシステムに提出されたオーディオファイルのオーディオファイルデータコンテンツに埋め込まれているテキスト情報を解析することにより、オーディオトラックを解析するソフトウェアを含むことができる。オーディオトラックの特性は、これらの特性を記述する単語又は数字（例えば、曲のタイトル及びアーティスト名、オーディオトラックの１分間のビート数、音楽トラックのジャンル等）に変換され、この時、オーディオトラックは索引２３、２３Ａの特性に対応するインデックスポイントと関連付けられる。更にマッチングシステム１は、エンティティの特性をインデックスポイントとして使用される単語又は数字に変換するように構成された外部ノードに通信可能に接続される。例えばマッチングシステム１は、音楽トラック（すなわち、曲）のサンプルを曲のタイトル及びそれを演奏するアーティスト名に「変換」するサーバであるＧｒａｃｅｎｏｔｅ・サーバに接続される。
【００９６】
従って、マッチングエンジン索引２３、２３Ａのインデックスポイント２１、２１Ａに対応する単語又は数字等の記号(symbol)シーケンスは、マッチングシステム１により受信されたテキストエンティティで見つけられた記号シーケンスに対応する必要はなく、あらゆる種類のエンティティ又はエンティティ特性を記述するあらゆる記号シーケンス（すなわち、単語及び／又は数字）であってもよいことが理解されるべきである。
【図１】
0005389186.tif 000003
【図２】
0005389186.tif 000004
【図３】
0005389186.tif 000005
【図４】
0005389186.tif 000006
【図５】
0005389186.tif 000007
【図６】
0005389186.tif 000008
【図７】
0005389186.tif 000009
【図８】
0005389186.tif 000010
【図９】
0005389186.tif 000011