(57)【要約】  ネットワークでの情報へのアクセスの仕方の局所性に着目したサービスの提供に適した検索システム等を提供する。ノードは、ネットワークにより相互に接続された情報処理装置である。各ノードは、その利用者が例えばＷｅｂサーバなどにアクセスした場合、アクセスしたウェブページについての検索用の索引を保持し、アクセスしたＵＲＬの履歴などの行動履歴を保持する。また、各ノードは、接続可能なノード群との間で行動履歴の比較を行い、隣人ノードを決定する。ノード４１に検索条件が入力された場合、隣人ノード４３及び４７に対して検索要求を行う。検索要求を受信したノード４３及び４７は、検索処理を行い、検索結果をノード４１に送信する。検索結果を受信したノード４１は、検索結果を集計して利用者に表示する。
2008146858.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにより互いに接続された複数の情報処理装置を含み、前記複数の情報処理装置のうちの一部の情報処理装置に入力された検索条件に基づく検索処理を行い、検索結果を表示する検索システムであって、
前記一部の情報処理装置のそれぞれは、
検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、
それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、
他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、
前記行動履歴記憶手段に記憶された行動履歴データと前記一部の情報処理装置のうちの他の情報処理装置の行動履歴記憶手段に記憶された行動履歴データとの類似度を演算する行動類似度演算手段と、
検索条件が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいて他の情報処理装置に対して検索要求を送信する問い合わせ手段と、
前記検索要求を受信した場合に、前記検索条件に基づいて前記検索データ記憶手段に記憶された検索データを検索し、前記検索条件が入力された情報処理装置に対して前記検索条件を満たす検索データのアクセスデータを送信する回答手段と、
他の情報処理装置の回答手段から受信したアクセスデータに基づいて検索結果を表示する表示手段と、
を備える、検索システム。
【請求項２】
前記アクセスデータは階層構造を有するものであり、
前記類似度演算手段は、前記アクセスデータの階層構造に基づいて、上位から下位への前方一致により類似度を演算する、
請求項１に記載の検索システム。
【請求項３】
前記検索データを作成するために用いられたデータはウェブページであり、
前記アクセスデータはＵＲＬである、
請求項２記載の検索システム。
【請求項４】
前記行動履歴データには入力された検索条件を示すデータが含まれ、
前記問い合わせ手段は、検索条件が入力された場合に、入力された検索条件に基づいて前記行動履歴データを更新する、
請求項１から３のいずれかに記載の検索システム。
【請求項５】
前記複数の情報処理装置の少なくとも１つは、前記一部の情報処理装置のうちの少なくとも１つの情報処理装置の行動履歴記憶手段に記憶された行動履歴データを保持する所在記憶情報処理装置であり、
前記問い合わせ手段は、前記所在記憶情報処理装置に対して、自ノードの行動履歴データと類似する行動履歴データを記憶するノードを問い合わせ、
前記所在記憶情報処理装置は、保持する行動履歴データに基づいて、問い合わせたノードの行動履歴データと類似するノードを回答し、
前記問い合わせ手段は、前記所在記憶情報処理装置により回答されたノードに対して検索要求を送信する、
請求項１から４のいずれかに記載の検索システム。
【請求項６】
前記一部の情報処理装置には、
前記行動類似度演算手段を備えず、
前記問い合わせ手段は、検索条件が入力された場合に、前記所在記憶情報処理装置に対して類似するノードを問い合わせる、
情報処理装置が含まれる、請求項５に記載の検索システム。
【請求項７】
前記複数の情報処理装置の少なくとも１つは、他の情報処理装置から検索要求を受信した場合に、前記検索条件に基づいて検索処理を行う検索装置であり、
前記問い合わせ手段は前記検索装置に対して検索要求を送信する、請求項１から６のいずれかに記載の検索システム。
【請求項８】
前記問い合わせ手段は、検索要求を受信した場合に、転送するかしないかを判断し、転送するときは前記一部の情報処理装置の他の情報処理装置に対して当該検索要求を送信する、請求項１から７のいずれかに記載の検索システム。
【請求項９】
前記一部の情報処理装置のそれぞれは、質問情報が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいて前記一部の情報処理装置のうちの他の情報処理装置に対して前記質問情報を送信する質問手段を備える、請求項１から８のいずれかに記載の検索システム。
【請求項１０】
前記一部の情報処理装置のそれぞれは、前記行動類似度演算手段により演算された類似度に基づいて、前記一部の情報処理装置のうちの他の情報処理装置に対して、前記検索データ記憶手段に記憶されている検索データ及び前記行動履歴記憶手段に記憶された行動履歴データの少なくとも一方に基づいて、所定の条件を満たすデータのアクセスデータを送信する推薦手段を備える、請求項１から９のいずれかに記載の検索システム。
【請求項１１】
入力された検索条件に基づく検索処理を行わせる情報処理装置であって、
検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、
それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、
他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、
複数の行動履歴データの間の類似度を演算する行動類似度演算手段と、
検索条件が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいてネットワークにより接続された他の情報処理装置に対して検索要求を送信する問い合わせ手段と、
他の情報処理装置から検索要求を受信した場合に、検索条件に基づいて前記検索データ記憶手段に記憶された前記検索データを検索する回答手段と、
を備える情報処理装置。
【請求項１２】
所定の情報の利用者に関する情報利用者データと、ネットワークにより接続された情報処理装置の利用者に関する装置利用者データとの類似度を演算する類似度演算装置であって、
前記情報利用者データ及び前記装置利用者データは、利用者によりアクセスされた情報の履歴を示すものを含む、類似度演算装置。
【請求項１３】
ネットワークにより互いに接続された複数の情報処理装置を含み、前記複数の情報処理装置のうちの一部の情報処理装置に入力された検索条件に基づく検索処理を行い、検索結果を表示する検索システムにおける検索方法であって、
前記一部の情報処理装置のうちの各情報処理装置は、
検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、
それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、
他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、
前記行動履歴記憶手段に記憶された行動履歴データと前記一部の情報処理装置のうちの他の情報処理装置の行動履歴記憶手段に記憶された行動履歴データとの類似度を演算する行動類似度演算手段と、
を備え、
前記一部の情報処理装置のうちの１つの情報処理装置に検索条件が入力された場合に、前記１つの情報処理装置の問い合わせ手段が、前記行動類似度演算手段により演算された類似度に基づいて他の情報処理装置に対して検索要求を送信する問い合わせステップと、
前記問い合わせ手段から検索要求を受信した他の情報処理装置の回答手段が、前記検索条件に基づいて前記検索データ記憶手段に記憶された前記検索データを検索し、前記１つの情報処理装置に対して前記検索条件を満たす検索データのアクセスデータを送信する回答手段と、
前記１つの情報処理装置の提示手段が、前記回答手段から受信したアクセスデータに基づいて検索結果を表示する提示ステップと、
を含む、検索方法。
【請求項１４】
コンピュータを、請求項１から１０のいずれかに記載の一部の情報処理装置のうちのいずれかの情報処理装置として、又は、請求項１１記載の情報処理装置として機能させるためのプログラム。
【請求項１５】
請求項１４記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索システム、情報処理装置、類似度演算装置、検索方法、プログラム及び記録媒体に関し、特に、ネットワークにより互いに接続された複数の情報処理装置を含み、前記複数の情報処理装置のうちの一部の情報処理装置に入力された検索条件に基づく検索処理を行い、検索結果を表示する検索システム等に関する。
【背景技術】
【０００２】
従来、インターネットにおける検索サービスとしては、例えばGoogleにより行われているものがある。Googleの検索サービスでは、検索エンジンが世界中のウェブページをクロールして集め、htmlの静的なリンク関係を元に分析し、一般に多くリンクされているものを優先してランキングして表示するものである。【０００３】
また、Googleは、３０万台とも推定される計算機で集中管理を行うものであり、シリコンバレーの１／４の電気を消費しているともいわれている。【０００４】
【非特許文献１】L.A．Barroso、外２名著，“Web  Search  for  a  Planet：The  Google  Cluster  Architecture”，IEEE  Micro，2003
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、Googleの検索サービスでは、例えば検索エンジン最適化（Search  Engine  Optimization：SEO）などで、ランキングが崩れつつある。また、動的なページが増加し、さらに、ソーシャルブックマークやＳＮＳが台頭しているが、Googleの検索サービスでは、クロールできないため、これらに対応することは困難である。【０００６】
そこで、発明者らは、インターネットでの情報へのアクセスの仕方の局所性（例えば、時間局所性、空間局所性など）に着目した。【０００７】
ここで、時間局所性には、例えば、作成時間により認められるもの、利用者の閲覧状況により認められるものなどがある。例えば２時間前に作成されたニュース記事は、一般的に利用者の興味が高いものである。また、例えば３年前に執筆されたニュース記事は、通常、利用者の興味は認めにくいが、多くの利用者が急に読み始めたものであれば利用者の興味が高いものとしてよいであろう。また、空間局所性は、例えば、言語圏により認められるもの、などがある。例えば一般の日本人にとっては、ラトビアのウェブページは興味が少ないであろう。【０００８】
そして、発明者らは、同じ局所的な情報を見ている人同士は、興味が近いと考えた。すなわち、同じ局所的な情報を見ている人同士では、ある人は、他の人が見るページに興味を示す可能性は高く、さらに、他の人たちが注目し始めたページには特に興味を示す可能性が高いと考えたのである。【０００９】
このような局所性のある情報の分析は、Googleのように静的なhtmlのリンク構造を解析しても明確でない。閲覧している利用者の動的な行動を分析する必要がある。【００１０】
そこで、本願発明は、ネットワークでの情報へのアクセスの仕方の局所性に着目したサービスの提供に適した検索システム等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
請求項１に係る発明は、ネットワークにより互いに接続された複数の情報処理装置を含み、前記複数の情報処理装置のうちの一部の情報処理装置に入力された検索条件に基づく検索処理を行い、検索結果を表示する検索システムであって、前記一部の情報処理装置のそれぞれは、検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、前記行動履歴記憶手段に記憶された行動履歴データと前記一部の情報処理装置のうちの他の情報処理装置の行動履歴記憶手段に記憶された行動履歴データとの類似度を演算する行動類似度演算手段と、検索条件が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいて他の情報処理装置に対して検索要求を送信する問い合わせ手段と、前記検索要求を受信した場合に、前記検索条件に基づいて前記検索データ記憶手段に記憶された検索データを検索し、前記検索条件が入力された情報処理装置に対して前記検索条件を満たす検索データのアクセスデータを送信する回答手段と、他の情報処理装置の回答手段から受信したアクセスデータに基づいて検索結果を表示する表示手段と、を備えるものである。【００１２】
請求項２に係る発明は、請求項１に記載の検索システムであって、前記アクセスデータは階層構造を有するものであり、前記類似度演算手段は、アクセスデータの階層構造に基づいて、上位から下位への前方一致により類似度を演算するものである。【００１３】
請求項３に係る発明は、請求項２記載の検索システムであって、前記検索データを作成するために用いられたデータはウェブページであり、前記アクセスデータはＵＲＬである。【００１４】
請求項４に係る発明は、請求項１から３のいずれかに記載の検索システムであって、前記行動履歴データには入力された検索条件を示すデータが含まれ、前記問い合わせ手段は、検索条件が入力された場合に、入力された検索条件に基づいて前記行動履歴データを更新するものである。【００１５】
請求項５に係る発明は、請求項１から４のいずれかに記載の検索システムであって、前記複数の情報処理装置の少なくとも１つは、前記一部の情報処理装置のうちの少なくとも１つの情報処理装置の行動履歴記憶手段に記憶された行動履歴データを保持する所在記憶情報処理装置であり、前記問い合わせ手段は、前記所在記憶情報処理装置に対して、自ノードの行動履歴データと類似する行動履歴データを記憶するノードを問い合わせ、前記所在記憶情報処理装置は、保持する行動履歴データに基づいて、問い合わせたノードの行動履歴データと類似するノードを回答し、前記問い合わせ手段は、前記所在記憶情報処理装置により回答されたノードに対して検索要求を送信するものである。【００１６】
請求項６に係る発明は、請求項５に記載の検索システムであって、前記一部の情報処理装置には、前記行動類似度演算手段を備えず、前記問い合わせ手段が、検索条件が入力された場合に、前記所在記憶情報処理装置に対して類似するノードを問い合わせる、情報処理装置が含まれるものである。【００１７】
請求項７に係る発明は、請求項１から６のいずれかに記載の検索システムであって、前記複数の情報処理装置の少なくとも１つは、他の情報処理装置から検索要求を受信した場合に、前記検索条件に基づいて検索処理を行う検索装置であり、前記問い合わせ手段は前記検索装置に対して検索要求を送信するものである。【００１８】
請求項８に係る発明は、請求項１から７のいずれかに記載の検索システムであって、前記問い合わせ手段は、検索要求を受信した場合に、転送するかしないかを判断し、転送するときは前記一部の情報処理装置の他の情報処理装置に対して当該検索要求を送信するものである。【００１９】
請求項９に係る発明は、請求項１から８のいずれかに記載の検索システムであって、前記一部の情報処理装置のそれぞれは、質問情報が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいて前記一部の情報処理装置のうちの他の情報処理装置に対して前記質問情報を送信する質問手段を備える。【００２０】
請求項１０に係る発明は、請求項１から９のいずれかに記載の検索システムであって、前記一部の情報処理装置のそれぞれは、前記行動類似度演算手段により演算された類似度に基づいて、前記一部の情報処理装置のうちの他の情報処理装置に対して、前記検索データ記憶手段に記憶されている検索データ及び前記行動履歴記憶手段に記憶された行動履歴データの少なくとも一方に基づいて、所定の条件を満たすデータのアクセスデータを送信する推薦手段を備えるものである。【００２１】
請求項１１に係る発明は、入力された検索条件に基づく検索処理を行わせる情報処理装置であって、検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、複数の行動履歴データの間の類似度を演算する行動類似度演算手段と、検索条件が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいてネットワークにより接続された他の情報処理装置に対して検索要求を送信する問い合わせ手段と、他の情報処理装置から検索要求を受信した場合に、検索条件に基づいて前記検索データ記憶手段に記憶された前記検索データを検索する回答手段と、を備えるものである。【００２２】
請求項１２に係る発明は、所定の情報の利用者に関する情報利用者データと、ネットワークにより接続された情報処理装置の利用者に関する装置利用者データとの類似度を演算する類似度演算装置であって、前記情報利用者データ及び前記装置利用者データは、利用者によりアクセスされた情報の履歴を示すものを含む。【００２３】
請求項１３に係る発明は、ネットワークにより互いに接続された複数の情報処理装置を含み、前記複数の情報処理装置のうちの一部の情報処理装置に入力された検索条件に基づく検索処理を行い、検索結果を表示する検索システムにおける検索方法であって、前記一部の情報処理装置のうちの各情報処理装置は、検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、前記行動履歴記憶手段に記憶された行動履歴データと前記一部の情報処理装置のうちの他の情報処理装置の行動履歴記憶手段に記憶された行動履歴データとの類似度を演算する行動類似度演算手段と、を備え、前記一部の情報処理装置のうちの１つの情報処理装置に検索条件が入力された場合に、前記１つの情報処理装置の問い合わせ手段が、前記行動類似度演算手段により演算された類似度に基づいて他の情報処理装置に対して検索要求を送信する問い合わせステップと、前記問い合わせ手段から検索要求を受信した他の情報処理装置の回答手段が、前記検索条件に基づいて前記検索データ記憶手段に記憶された前記検索データを検索し、前記１つの情報処理装置に対して前記検索条件を満たす検索データのアクセスデータを送信する回答手段と、前記１つの情報処理装置の提示手段が、前記回答手段から受信したアクセスデータに基づいて検索結果を表示する提示ステップと、を含むものである。【００２４】
請求項１４に係る発明は、コンピュータを、請求項１から１０のいずれかに記載の一部の情報処理装置のうちのいずれかの情報処理装置として、又は、請求項１１記載の情報処理装置として機能させるためのプログラムである。【００２５】
請求項１５に係る発明は、請求項１４記載のプログラムを記録した記録媒体である。【００２６】
なお、ネットワークは例えばインターネットである。他の情報処理装置に保持されているデータは、例えば、ウェブページ、音声データ、画像データ、動画データ、テキストデータ、文書情報などである。検索データは例えば検索用の索引である。アクセスデータは例えばデータの所在するところを示すアドレス（ＵＲＬなど）である。請求項２に記載された発明にあるように、例えば、検索データはウェブページに基づいて作成され、行動履歴データの比較は、ＵＲＬの階層構造に基づいて階層の上位から下位へ前方一致により行い、完全一致を最大スコアとする部分一致により行うようにしてもよい。このような比較により、類似性を精度よく判断することができる。また、類似度演算手段は、ＡＣオートマトンを用いて行動履歴データの比較を行うようにしてもよい。ＡＣオートマトンを利用することにより、計算量を削減することが可能となる。【００２７】
また、検索条件が入力された場合に、回答手段が当該検索条件に基づいて検索データ記憶手段に記憶された検索データを検索し、表示手段が、前記回答手段の検索結果及びネットワークにより接続された他の情報処理手段の回答手段による回答に基づいて検索結果を提示するものであってもよい。【００２８】
さらに、検索データ記憶手段には、例えば情報処理装置が保有し他の情報処理装置による閲覧が許可されたデータやソーシャルブックマークなどに基づいて生成された検索データが記憶されるようにしてもよい。さらに、推薦手段が、他の情報処理装置に対して、このようなデータへのアクセスを推薦するようにしてもよい。【００２９】
さらに、アクセス管理手段は、例えばネットバンクのページにおいて個人情報を含まないように検索データを生成するように、指定された情報又は特定の情報を自動的に含まないように検索データ記憶手段や行動履歴記憶手段を制御するようにしてもよい。【００３０】
さらに、検索装置は、行動履歴記憶手段に記憶された行動履歴データを用いて検索処理を行い、又は、検索結果を回答するものであってもよい。【００３１】
さらに、情報処理装置に入力される検索条件は、当該情報処理装置にネットワークにより接続された情報処理端末を介して入力されたものであってもよい。この場合、当該情報処理端末が行動履歴記憶手段を有しているときは、検索処理は、当該情報処理端末の行動履歴記憶手段に記憶された行動履歴データを用いて行われるものであってもよい。また、当該情報処理端末が行動履歴記憶手段を有していないときは、検索処理は、当該情報処理装置の行動履歴記憶手段に記憶された行動履歴データを用いて行われるものであってもよい。
【発明の効果】
【００３２】
本願発明によれば、閲覧する情報に基づいて興味の類似性を判断し、興味の近い人たちを結ぶ動的な興味空間を構築し、その興味空間で例えば検索、質問、推薦などのサービスを実現することができる。【００３３】
検索サービスであれば、興味の近い人たちが閲覧したページから検索結果を得ることができる。各ユーザの類似度は、各ユーザがアクセスし、また、他のユーザがアクセス可能な情報により判断される。そのため、検索サービスについて、類似度の演算から検索結果の回答まで、各ユーザがアクセスした情報という共通の情報を用いた、一貫した処理を実現することが可能となる。【００３４】
質問サービスであれば、質問者にとっては興味の近い人たちに質問して適切な解答を得ることが期待でき、さらに、解答者にとっても、質問者が自力で検索しなければ興味の近い人として認識されないことから、自力である程度調べた人からの質問であるため気分よく解答をすることができる。【００３５】
推薦サービスであれば、利用者は、興味が近い人たちからの推薦を自動的に次々と得られることとなる。利用者はその中から興味のある情報にアクセスすればよい。【００３６】
さらに、このサービスは、ピア・ツー・ピア（以下、「P2P」という。）を用いて実現可能である。集中的な管理を使用するとしても、その軽減を図ることができる。
【図面の簡単な説明】
【００３７】
【図１】本願発明の実施例１に係る検索システム１の一例を示す概略ブロック図である。
【図２】図１のノード５及び７に対応するノード２１の一例を示す概略ブロック図である。
【図３】図２のノード２１があるウェブページを閲覧した場合の、検索用の索引と行動履歴の更新の一例を示す図である。
【図４】ノード４１の行動類似度演算部が、接続可能なノード４３、４５及び４７に対して行動履歴を要求し、要求されたノードが行動履歴を送信する動作を示す図である。
【図５】検索条件がノード４１に入力された場合の検索処理の一例を示す図である。
【図６】隣人ノード４３及び４７に加えて、図１の検索サーバ９に対しても検索要求を行い、その検索結果を得る場合を示す図である。
【図７】ノード４７による転送処理の一例を示す図である。
【図８】本願発明の実施例２に係る検索システム５１の一例を示す概略ブロック図である。
【図９】図８のクライアント・ノード１７及び１９に対応するクライアント・ノードの一例を示す概略ブロック図である。
【図１０】図９（ｂ）のクライアント・ノード７１に検索条件が入力された場合の検索処理の一例の概要を示す図である。
【図１１】本願発明の実施例４に係るノード１０１を構成するプロセスの一例を示す図である。
【符号の説明】
【００３８】
１  検索システム、３  Ｗｅｂサーバ、５及び７  ノード、９  検索サーバ、１１  所在管理サーバ、２１  ノード、２３  検索データ記憶部、２５  行動履歴記憶部、２７  アクセス管理部、２９  行動類似度演算部、３１  問い合わせ部、３３  回答部、３５  検索結果表示部、３７  質問部、３９  推薦部
【発明を実施するための最良の形態】
【００３９】
以下、図面を参照して、本願発明の実施の形態について説明する。
【実施例１】
【００４０】
図１は、本願発明の実施例１に係る検索システム１の概略ブロック図である。検索システム１は、ウェブサーバ３と、ウェブサーバ３にアクセスしてウェブページを閲覧するノード５及び７を含むノード群（本願請求項の「一部の情報処理装置」に対応。）と、所定の検索条件につき検索処理を行う検索サーバ９（本願請求項の「検索装置」に対応。）と、ノード群のノードにアクセスするための情報を管理する所在管理サーバ１１（本願請求項の「所在記憶情報処理装置」に対応。）を備える。ウェブサーバ３、ノード５及び７、検索サーバ９並びに所在管理サーバ１１は、インターネットにより相互にアクセスが可能である。【００４１】
検索システム１は、ノード５又は７の利用者により入力された検索条件に基づいて、ノード５及び７の全部又は一部、さらに、必要に応じて検索サーバ９が検索処理を行い、利用者に検索結果を提示するものである。【００４２】
図２は、図１のノード５及び７に対応するノード２１の概略ブロック図である。【００４３】
図２のノード２１は、検索処理の対象となる検索用の索引を記憶する検索データ記憶部２３と、検索用の索引にそれぞれ対応し、対応する検索用の索引を作成するために用いられたデータ（例えばウェブページ）にアクセスするための複数のＵＲＬを含む行動履歴を記憶する行動履歴記憶部２５と、ウェブサーバ３のウェブページなどを閲覧した場合に、閲覧したウェブページに関する検索用の索引を作成して検索データ記憶部２３を制御し、閲覧したウェブページのＵＲＬを用いて行動履歴記憶部２５を制御するアクセス管理部２７を備える。【００４４】
図３は、ノード２１がウェブページ（http://hoge.com/huga.html）を閲覧した場合の、検索用の索引及び行動履歴の更新の一例を示す図である。アクセス管理部２７は、検索データ記憶部２３にhuga.htmlの索引を追加し、行動履歴としてhttp://hoge.com/huga.htmlを追加する。なお、検索データ記憶部２３や行動履歴記憶部２５の制御する場合に、例えば、所定の個数内に納めるようにしてもよく、また、所定の容量内に納めるようにしてもよい。【００４５】
また、図２のノード２１は、他のノードの行動履歴記憶部に記憶された行動履歴と行動履歴記憶部２５に記憶された行動履歴との類似度を演算し、行動履歴の類似性を判定する行動類似度演算部２９を備える。図４を参照して、行動類似度演算部２９の動作について説明する。【００４６】
検索システム１には、複数のノードが存在している。しかし、各ノードは、他の全てのノードの存在を必ずしも把握できない。また、例えば物理的に距離が遠くて、通信コストとの関係で接続できない（接続すべきでない）ものもある。そのため、各ノードには、接続可能なノードと接続できないノードが存在する。図４は、ノード４１の行動類似度演算部２９が、接続可能なノード４３、４５及び４７に対して行動履歴を要求し、要求されたノードが行動履歴を送信する動作を示す図である。ノード４１は、定期的に、接続可能なノード４３、４５及び４７に対して行動履歴を要求し、ノード４３、４５及び４７は行動履歴をノード４１に送信する。【００４７】
行動類似度演算部２９は、ノード４３、４５及び４７から受信した行動履歴と自身の行動履歴を比較し、例えば共通する情報の数などにより類似度を演算する。例えば、行動履歴の比較は、ＡＣオートマトンを用いて行う。すなわち、２つの行動履歴の比較において、一方の行動履歴から状態遷移を生成し、生成した状態遷移を用いて他方の状態遷移との比較を行う。このことにより、計算量が、単純に個々のデータをそれぞれ比較する方法であれば、データの個数Ｎに対してＮ２のオーダーになるのに対して、ＡＣオートマトンを利用することにより、Ｎのオーダーとすることが可能となる（例えば、A．V．Aho、外１名著，“Efficient  String  Matching：An  Aid  to  Bibliographic  Search”，Communications  of  the  ACM18(6)：333-340参照）。また、行動履歴が、ＵＲＬのように階層構造により表現されている場合、行動履歴の比較は、階層の上位から下位へ前方一致により行い、完全一致を最大スコアとする部分一致により行うようにしてもよい。そして、例えば、類似度が一定以上のノード、より類似するものから順に所定の数のノードなどを選択する。以下では、選択されたノードを「隣人ノード」という。図４では、ノード４３及び４７が隣人ノードとして選択されたものとする。【００４８】
図２を参照して、ノード２１は、利用者により検索条件が入力された場合に隣人ノードに対して検索要求を送信する問い合わせ部３１と、検索要求を受信した場合に検索条件に基づいて検索データ記憶部２３に記憶された検索用の索引を検索して検索条件を満たす検索用の索引に対応するウェブページのＵＲＬなどを含む検索結果を回答する回答部３３と、隣人ノードの回答部から受信したＵＲＬなどに基づいて検索結果を表示する検索結果表示部３５を備える。図５及び図６を参照して、問い合わせ部３１と回答部３３と検索結果表示部３５の動作について、さらに説明する。【００４９】
図５は、検索条件がノード４１に入力された場合の検索処理の一例を示す図である。検索条件が入力されたノード４１の問い合わせ部３１は、隣人ノード４３及び４７に検索要求を送信する。検索要求を受信した隣人ノード４３及び４７の回答部３３は、検索データ記憶部２３に記憶された検索用の索引を検索し、検索条件を満たす検索用の索引に対し、行動履歴記憶部に記憶された行動履歴のＵＲＬなどの検索結果をノード４１に送信する。ノード４１の検索結果表示部３５は、ノード４３及び４７から受信した検索結果を集計し、集計結果を表示する。なお、ノード４１の回答部３３も検索処理を行い、ノード４１の検索結果表示部３５が、ノード４３及び４７から受信した検索結果に併せてノード４１自身の検索結果も集計するようにしてもよい。【００５０】
図２を参照して、問い合わせ部３１は、例えば検索結果の精度がよくない場合など、必要に応じて、検索サーバ９に検索要求を送信し、検索サーバ９の検索結果を得る。図６は、隣人ノード４３及び４７に加えて、図１の検索サーバ９に対しても検索要求を行い、その検索結果を得る場合を示す図である。なお、ノード４１は検索サーバ９に対して検索要求と共に行動履歴を送信し、検索サーバ９は、ノード４１の行動履歴を考慮した検索処理・検索結果の回答を行うようにしてもよい。【００５１】
図２を参照して、問い合わせ部３１は、他のノードから検索要求を受信した場合に、例えば検索結果の精度がよくない場合などに、転送するかしないかを判断し、転送するときは他のノードに対して検索要求を送信する。図７を参照して、問い合わせ部３１による転送処理について説明する。【００５２】
図７は、ノード４７による転送処理の一例を示す図である。検索条件が入力されたノード４１は、検索要求を隣人ノード４３及び４７に送信する。検索要求を受けた隣人ノード４７は、例えば検索条件を満たす検索用の索引が少ないなど良好な検索結果が得られないような場合、自身の隣人ノード４５に対し更に検索要求を送信し、その検索結果を得、これらの検索結果をノード４１に送信する。このような転送処理を行うことにより、よりよい検索結果を得ることが期待できる。なお、転送処理は検索サーバ９に対して行ってもよい。また、転送処理する場合には、例えば、パスの数とIDのような情報を付加していき、類似度は検索要求者からの低減された距離としてもよい。【００５３】
図２を参照して、ノード２１は、質問情報が入力された場合に、隣人ノードに対して質問情報を送信し、その回答を得て表示する質問部３７を備える。この質問部３７により、ノード２１の利用者は、閲覧するページが似ている人たちに質問することが可能となる。例えば、ある利用者が「バビロニア」について知りたくて、いろいろと検索処理をしたとする。これにより、ノード２１は、この利用者が中近東古代史に興味があると認識し、中近東古代史に興味がある他の人により使用されているノードに隣人ノードとして結びつくようになる。そして、利用者から「バビロニアに連れて行かれたユダヤ人は何人？」という質問があった場合、結び付けられた人たちにこの質問を尋ねる。すると、その人たちから「最初は3,023人で、後で10,832人」という素敵な解答を得られるであろう。これは、質問者にも解答者にもメリットがある。質問者側のメリットは質問相手が適切であることである。そのため、適切な解答が返ってくる可能性が高くなる。解答者側のメリットは、興味がある人として結びついていることから、ただの「教えてくん」と違ってきちんと自力で調べた人の質問であり、気分よく解答することができることである。【００５４】
図２を参照して、ノード２１は、検索用の索引、行動履歴などに基づいて、隣人ノードに対して、頻繁に閲覧されているウェブページなどの情報を送信する推薦部３９を備える。隣人ノードから推薦を受けた情報は、利用者に自動的に表示される。例えば似た興味の人たちが注目し始めたウェブページは、利用者も興味を示す可能性が高い。推薦部３９により、このような利用者が興味を示す可能性が高い情報を自動的に表示することが可能となる。【００５５】
続いて、図１の所在管理サーバ１１について説明する。図４を参照して説明したように、各ノードには存在を知らないために接続できないノード群が存在する。図１の所在管理サーバ１１は、例えば、各ノードから行動履歴とそのアクセス方法を収集しておく。そして、各ノードは、接続可能なノード群との類似度が低い場合や検索結果の精度が悪い場合などには、この所在管理サーバ１１に自身の行動履歴と類似するノードを問い合わせて、その後は直接に他のノードと通信を行う。【００５６】
なお、図２の行動履歴記憶部２５に記憶される行動履歴には、入力された検索条件を示すデータが含まれてもよい。この場合、問い合わせ部３１は、検索条件が入力された場合に入力された検索条件に基づいて行動履歴を更新する。また、行動履歴には、例えば、ゲームなどをプレイしたことを示す情報、クリアしたことを示す情報、利用者が行ったことのある場所の情報、利用者が購入した商品の履歴などを含むようにしてもよい。【００５７】
また、図２の行動類似度演算部２９は、類似度を、例えばジャンル毎など行動履歴を区分して求めるようにしてもよい。【００５８】
さらに、図２のアクセス管理部２７は、他の情報処理装置に保持されている公開されているデータ、例えばウェブページ、音声データ、画像データ、動画データ、テキストデータ、文書情報などのデータにアクセスした場合に検索データ記憶部２３及び行動履歴記憶部２５を制御するようにしてもよい。【００５９】
さらに、図２のアクセス管理部２７は、例えばネットバンクのウェブページにおいて個人情報を含まない検索用の索引等を生成するように、指定された情報又は特定の情報を含まないように検索データ記憶部２３や行動履歴記憶部２５を自動的に又は指定により制御するようにしてもよい。【００６０】
さらに、図２の検索データ記憶部２３には、例えば自分自身が保有し他のノードによる閲覧が許可されたデータやソーシャルブックマークなどに基づいて生成された検索用の索引等が記憶されるようにしてもよい。【００６１】
さらに、図２の検索データ記憶部２３には、検索用の索引に加えて、アクセスしたデータ（例えばウェブページのhtmlなど）の全部又は一部を含み、回答部３３はこれを含めて検索処理を行うようにしてもよい。【００６２】
さらに、隣人ノードを決定するタイミングは、検索条件が入力されたときに行うようにしてもよい。例えば、行動類似度演算部２９は定期的に他のノードの行動履歴との類似度を演算しておき、検索条件が入力された場合に、問い合わせ部３１が隣人ノードとなるノードを決定して検索要求を送信するようにしてもよい。また、行動類似度演算部２９は検索条件が入力されて類似度を演算して隣人ノードとなるノードを決定してもよい。【００６３】
さらに、検索システム１は、ノード５及び７の行動履歴に基づいて、商品の広告等の情報を送信する広報サーバを備えてもよい。検索サーバ３と所在管理サーバ１１と広報サーバは、例えば検索処理の際に広告等を付与して検索結果を送信するように、一つの情報処理装置が２つ以上のサーバとして機能することにより実現されるものであってもよい。また、各サーバはそれぞれ複数あってもよい。
【実施例２】
【００６４】
実施例１では、各ノードは、検索処理のサーバとしてもクライアントとしても動作するものであった。実施例２は、検索処理のサーバとしてもクライアントとしても動作するノードだけでなく、クライアントとしてのみ動作するもの（以下、「クライアント・ノード」という。）も存在する場合のものである。【００６５】
図８は、本願発明の実施例２に係る検索システム５１の概略ブロック図である。検索システム５１は、ウェブサーバ３、ノード５及び７を含むノード群、検索サーバ９、所在管理サーバ１１に加え、クライアント・ノード１３及び１５を含むクライアント・ノード群を備える。ウェブサーバ３、ノード５及び７、検索サーバ９、所在管理サーバ１１並びにクライアント・ノード１３及び１５は、インターネットにより相互にアクセスが可能である。【００６６】
ノード５及び７は、図２のノード２１と同様の構成である。異なる点について下記に説明する。【００６７】
図９は、図８のクライアント・ノード１３及び１５に対応するクライアント・ノードの一例を示す概略ブロック図である。【００６８】
図９（ａ）は、クライアント・ノード６１が、行動履歴記憶部６２とアクセス管理部６３と行動類似度演算部６４と問い合わせ部６５と検索結果表示部６６を備える場合を示す図である。この場合、クライアント・ノード６１がノードと違う点は、他のノードやクライアント・ノードから検索要求を受信しないことである。そのため、クライアント・ノード６１に検索条件が入力された場合の動作は、実施例１においてノード４１に関して説明したことと同様のものとなる。【００６９】
図９（ｂ）は、クライアント・ノード７１が、行動履歴記憶部７２とアクセス管理部７３と問い合わせ部７５と検索結果表示部７６を備える場合を示す図である。クライアント・ノード７１は行動類似度演算部を有しない。そのため、この実施例では、問い合わせ部７５が他のノードに対して検索要求を送信するときに、併せて行動履歴部７２に記憶された行動履歴を送信し、検索要求を受信したノードは、受信した行動履歴と類似するノードを探して検索要求を送信し、これらの検索結果をクライアント・ノード７１に送信するものとする。【００７０】
図１０は、図９（ｂ）のクライアント・ノード７１に検索条件が入力された場合の検索処理の一例の概要を示す図である。【００７１】
検索条件が入力されたクライアント・ノード７１の問い合わせ部７５は、例えば所在管理サーバ１１に問い合わせて接続可能なノードを知り、検索要求を送信する。図１０の場合では、接続可能なノードはノード９１であったとする。このとき、クライアント・ノード７１の問い合わせ部７７は、行動履歴記憶部７３の行動履歴を併せて送信する。検索要求を受信したノード９１の行動類似度演算部２９は、クライアント・ノード７１の行動履歴と類似するノードを探索する。図１０の場合では、類似するノードは、ノード９３とノード９７であったとする。ノード９１の問い合わせ部３１は、ノード９３とノード９７に検索要求を転送する。転送を受けたノード９３及び９７の回答部３３は検索処理を行い、ノード９１に検索結果を送信する。検索結果を受信したノード９１は、クライアント・ノード７１に検索結果を送信する。検索結果を受信したクライアント・ノード７１の検索結果表示部７６は、受信した検索結果を集計して表示する。【００７２】
図９（ｂ）のクライアント・ノード７１の場合に、検索システム５１を以下のように捉えてもよい。ネットワークにより互いに接続され、第１の情報処理装置群及び第２の情報処理装置群の情報処理装置を含む複数の情報処理装置を含み、第１の情報処理装置群及び第２の情報処理装置群の情報処理装置に入力された検索条件に基づく検索処理を行う検索システムであって、前記第１の情報処理装置群の各情報処理装置は、検索処理の対象となる複数の検索データを記憶する検索データ記憶手段と、それぞれが前記検索データのいずれかに対応し、対応する検索データを作成するために用いられたデータにアクセスするための複数のアクセスデータを含む行動履歴データを記憶する行動履歴記憶手段と、他の情報処理装置に保持されているデータにアクセスした場合に、当該データに基づいて検索データを生成して前記検索データ記憶手段を制御し、当該データのアクセスデータに基づいて前記行動履歴記憶手段を制御するアクセス管理手段と、複数の情報処理装置の行動履歴記憶手段に記憶された行動履歴データの間の類似度を演算する行動類似度演算手段と、検索条件が入力された場合に、前記行動類似度演算手段により演算された類似度に基づいて前記第１の情報処理装置群のうちの他の情報処理装置に対して検索要求を送信する問い合わせ手段と、少なくとも前記第１の情報処理装置群の情報処理装置から検索要求を受信した場合に、前記検索条件に基づいて前記検索データ記憶手段に記憶された前記検索データを検索する回答手段と、を備え、前記第２の情報処理装置群の各情報処理装置は、アクセスしたデータの履歴を示す行動履歴データを記憶する行動履歴記憶手段と、他の情報処理装置に保持されているデータにアクセスした場合に、前記行動履歴記憶手段に記憶された行動履歴データを更新するアクセス履歴管理手段と、検索条件が入力された場合に、前記第１の情報処理装置群のうちの情報処理装置に対して検索要求を送信する問い合わせ手段と、を備えるものである。【００７３】
なお、クライアント・ノード７１から検索要求を受信したノード９１は、行動類似度演算部２９によりクライアント・ノード７１の行動履歴との類似度を演算し、類似している場合には回答部３３により検索処理を行い、他のノード９３や９７の検索結果と併せて自身の検索結果も送信するようにしてもよい。【００７４】
また、クライアント・ノード７１は、ノードに検索処理を要求する場合に、例えば所在管理サーバ１１に問い合わせて自身の行動履歴と類似するノードに対して検索要求を送信するようにしてもよい。自身の行動履歴と類似するノードであれば、隣人ノードとなりうるノードを多く知っている可能性が高まり、検索処理の精度が高くなることが期待される。【００７５】
また、クライアント・ノードは、検索サーバ９に対して検索要求を送信してもよく、また、ノード９１なども必要に応じて検索サーバ９に対して検索要求を送信してもよい。この場合、検索サーバ９は、検索条件だけでなく、クライアント・ノード７１の行動履歴に基づいて検索結果を生成するようにしてもよい。【００７６】
さらに、検索要求を受信したノード９３や９７は、その隣人ノードなどに検索要求の転送処理を行って、検索処理の精度を高めるようにしてもよい。【００７７】
さらに、クライアント・ノード７１は、質問部を備え、入力された質問情報をノードに送信してその解答を得るものであってもよい。また、クライアント・ノード７１は他のノードなどから推薦を受けるようにしてもよい。【００７８】
図９（ｃ）は、クライアント・ノード８１が、問い合わせ部８５と検索結果表示部８６を備える場合を示す図である。クライアント・ノード８１の利用者により、問い合わせ部８５には特定のノードへのアクセス方法が設定されているとする。クライアント・ノード８１に検索条件が入力された場合、問い合わせ部８５は、設定されたノードへ検索要求を送信する。検索要求を受信したノードは、実施例１と同様に自身に記憶された行動履歴を利用して検索処理を行い、その検索結果をクライアント・ノード８１に送信する。検索結果表示部８６は、受信した検索結果を集計して表示する。【００７９】
なお、検索システム５１は、ノード５及び７並びにクライアント・ノード１３及び１５の行動履歴に基づいて、商品の広告等の情報を送信する広報サーバを備え、広報サーバから情報を受信したノードやクライアント・ノードは、受信した情報を表示するものであってもよい。
【実施例３】
【００８０】
続いて、行動履歴の比較処理について、図１を参照して、他の実施例を説明する。【００８１】
本実施例３において、各ノード５、７は、所在管理サーバ１１に対して、行動履歴を定期的に送信する。そして、各ノード５、７は、検索処理にあたり、所在管理サーバ１１に対して隣人ノードを問い合わせる。所在管理サーバ１１は、図２の行動類似度演算部２９と同様の処理により管理する各ノードの行動履歴の比較処理を行い、問い合わせたノードに対して、隣人ノードを回答する。各ノードは、隣人ノードに対して検索条件（検索クエリ）を送信し、隣人ノードは、検索結果を回答する。【００８２】
このように、行動履歴の比較処理を所在管理サーバ１１で一元的に行うことにより、各ノードは、自身の行動履歴を、所在管理サーバ１１以外のノードに送信する必要がなくなる。各ノードの行動履歴は個人的な情報である。サーバへの送信に対しては暗号化を用いることにより行動履歴という個人情報の秘匿が可能である。また、各ノードは個人的に使用されるものであり、そのようなノードへ行動履歴を送信しないことにより、個人情報の漏えいを防止することが可能となる。また、所在管理サーバ１１により隣人ノードを求めるノードは、図２の行動類似度演算部２９を備える必要がなくなる。なお、各ノードは、記憶する行動履歴のうち、所在管理サーバ１１に対して送信するものを選択可能としてもよい。さらに、各ノードは、行動履歴のうち、所在管理サーバ１１及び他のノードに対して送信するものを個別に選択可能としてもよい。
【実施例４】
【００８３】
続いて、図１のノード５及び７の一例について、図１１を参照して具体的に説明する。図１１は、本願発明の実施例４に係るノード１０１を構成するプロセスを示す図である。ノード１０１は、browserプロセス１０３、uiプロセス１０５、p2pプロセス１０７及びsentimaniプロセス１０９の４つのプロセスからなる。【００８４】
browserプロセス１０３は、プラグインが組み込まれているブラウザのプロセスである。利用者がウェブページを閲覧したときに行動履歴を通知する。uiプロセス１０５は、ユーザインタフェースを表示するプロセスである。p2pプロセス１０７は、P2P処理をカプセル化するプロセスである。隣人ノードの管理も受け持つ。sentimaniプロセス１０９は、他の３プロセスと通信をしながら利用者の行動履歴を管理し、検索用の索引を作成し、検索要求への応答をするプロセスである。複数のモジュールから成り立ち、スレッドも複数持つ。sentimaniプロセス１０９は、図２のアクセス管理部２７による処理、行動類似度演算部２９による他のノードの行動履歴と自身の行動履歴との類似度（本実施例４では「sentimani距離」という。）を演算する処理、問い合わせ部３１及び回答部３３による処理、検索結果表示部３５による隣人ノードからの検索結果を集計する処理などを行う。【００８５】
本実施例４において、索引は索引検索方式を用いて管理する。この方式はドキュメント単位での追加や削除が行えない。ドキュメントが追加されたときに、全ドキュメントの分の索引を再構築する処理は重いので現実的でない。そこで、全ドキュメントを複数の索引に分けて管理する。このときの各索引をindex_tと呼ぶ。新しい行動履歴が追加されたときは索引の再構築はせずに蓄積だけしておく。一定時間おきにsentimani距離の更新の通知が届くので、そのときに蓄積していた行動履歴の分の索引を構築する。【００８６】
キーワード検索をするときは、index_t全てに対して検索をする。検索の結果得られるのは、ドキュメントを管理している構造体のリストである。その構造体をuserpage_tと呼ぶ。【００８７】
index_tから１つのドキュメントの索引を削除するのは難しい。そこで、userpage_tに、有効・無効を表すstatusフラグを用意する。古くなった行動履歴を削除するときはstatusフラグを無効にする。index_tには索引は残っている状態である。検索の結果見つかったuserpage_tのリストからstatusフラグが有効でないものを除外すれば適切な検索結果が得られる。あるindex_tが管理しているドキュメントが全て無効になったとき、そのindex_tを破棄する。【００８８】
続いて、行動履歴の管理について説明する。userpage_tはモジュールuser_histにより管理される。user_histは新しい行動履歴を保持するために、新しく追加されたがまだ索引の構築が行なわれていない行動履歴を保持するnew_pages、索引が構築されてる有効な行動履歴を保持するvalid_pages、及び、索引は構築されているが古くなったため無効となった行動履歴を保持するinvalid_pagesという３つのリストを持つ。【００８９】
新しい行動履歴がvalid_pages又はinvalid_pagesに含まれていた場合、そのuserpage_tを有効にしてvalid_pagesの先頭に移す。また、新しい行動履歴がnew_pagesに含まれていた場合、new_pagesの先頭に移す。このため、既存のuserpage_tと新規のuserpage_tを比較する必要があり、これを管理するために辞書構造を用いる。URIの文字列をキーとする。【００９０】
全てのuserpage_tは、プログラムの再起動時に読み込まれ直す必要がある。また、プログラムが強制終了されても、再起動時には適切な状態で復元されることが望ましい。そこでuserpage_tを書き出しておくファイルuserpages.dbを用意する。【００９１】
userpages.db内のそれぞれのuserpage_tに、固定長の領域を割り当てる。また、先頭のものから順にドキュメントIDを振っていく。また、最初のuserpage_tの前にuserpage_tと同じサイズだけの領域を確保し、そこにuserpages.dbのヘッダ情報を書き込む。【００９２】
続いて、indexでの検索処理について説明する。indexは複数のindex_tを管理している。キーワード検索をするとき、これら全てに対して検索処理を行い、その結果をリストにまとめる。以下に、ひとつのindex_tでの検索時の処理について説明する。【００９３】
index_tはドキュメントID逆算配列を持っている。ドキュメントID逆算配列のひとつの要素は、ドキュメントIDと合成テキスト内での位置からなる。【００９４】
また、検索を始めるときにhitinfoという配列を確保する。hitinfo配列の要素数はそのindex_tが管理しているドキュメント数と同じである。ひとつの配列要素は、termfreqと最小ヒット位置を格納する領域の２つからなる。【００９５】
まず索引検索の結果、合成テキスト内でのヒット位置が求まる。このヒット位置がどのドキュメントのものであるかを調べるために、ドキュメントID逆算配列を探索する。ドキュメントID逆算配列は、合成テキストに格納されているドキュメントの順になっており、各ドキュメントの先頭位置がheadpos[]に格納されている。【００９６】
headpos[]を探索した結果、添字iが得られたとする。docids[i]に格納されているドキュメントIDが、検索結果のドキュメントということになる。termfreq[i]は、そのドキュメントでヒットした回数なので、これをインクリメントする。minpos[i]には、そのドキュメント内での最小ヒット位置が格納されており、既に格納されている物よりも今回のヒット位置が小さければ上書きする。【００９７】
続いて、キーワード検索kw_searchについて説明する。kw_searchではキーワード検索と結果の集計・ランキングに関する処理を行う。kw_searchは、大きく分けると２つの処理を行なう。１つ目は、利用者からの検索要求を他のノードに投げ、返ってきた結果を集計する処理である。２つ目は、隣人ノードからの検索結果に応じる処理である。【００９８】
sentimani_distは、タイマを用いて定期的にセルフノードの行動履歴リストを再構築する処理、隣人ノードからの要求に応じてセルフノードの行動履歴リストを返す処理、並びに、隣人の行動履歴リストとセルフノードの行動履歴リストを比較してsentimani距離を計算する処理を行う。【００９９】
sentimani_ctrlは、プログラム全体の起動・終了などを管理する。起動時に各モジュールの初期化処理などを呼び出す。終了時に各モジュールを解放する。sentimani_ctrlは、main関数から始まるスレッドを持っている。このスレッドは、OSからのシグナル、イベント、プログラム終了通知などに応答する。このため、sentimaniのアルゴリズムの処理などは行わず、基本的にはアイドル状態にしておく。異常が発生した場合は、他のプロセスにstopメッセージを送付し、自プロセスも終了する。【０１００】
プロセス間通信用のチャネルchannelはプロセス間通信の処理を行う。channelはオブジェクト指向で言うところのクラスに相当し、インスタンスに相当するのがui_channel、browser_channel、p2p_channelである。channelごとに、送信用と受信用のソケットを１つずつ持つ。また、channelはXMLで記述されるメッセージのエンコード・デコードも行う。
【図１】
2008146858.tif 000003
【図２】
2008146858.tif 000004
【図３】
2008146858.tif 000005
【図４】
2008146858.tif 000006
【図５】
2008146858.tif 000007
【図６】
2008146858.tif 000008
【図７】
2008146858.tif 000009
【図８】
2008146858.tif 000010
【図９】
2008146858.tif 000011
【図１０】
2008146858.tif 000012
【図１１】
2008146858.tif 000013
【国際調査報告】
2008146858.tif 000014
2008146858.tif 000015
2008146858.tif 000016
2008146858.tif 000017