(57)【特許請求の範囲】
【請求項１】
ＣＰＵとメモリと入出力デバイスとを有するコンピュータシステム（１００）で使用され、カレントサーチ結果の中のアイテムをランク付ける方法であって、
多数のサーチ用語の各々について、スコアを、前記メモリに格納されたアイテムレーティングテーブルに記録するステップ（２０１乃至２０８）であって、前記スコアは、前記サーチ用語を含む以前のクエリーから得られた以前のサーチ結果において返された多数のアイテム（３０１乃至３０６）の各々についてユーザが選択した頻度を示し、前記多数のアイテムの各々のスコアを、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとに、前記ＣＰＵがインクリメントするステップと、
前記ＣＰＵが前記入出力デバイスを介して、カレントクエリーとカレントサーチ結果を受け取るステップであって、受け取られたカレントクエリーは前記多数のサーチ用語のうち１または複数の用語を含んでおり、受け取られたカレントサーチ結果は、前記多数のアイテムの中で、前記受け取られたカレントクエリーを満足する複数のアイテムを特定しているステップと、
前記アイテムレーティングテーブルを参照して、前記受け取られたカレントクエリーに含まれる１または複数のサーチ用語に対応する前記受け取られたカレントサーチ結果の中で特定された複数のアイテムの各々について、以前のクエリーから得られた以前のサーチ結果において返されたアイテムの前記選択した頻度を示すスコアを、前記ＣＰＵが抽出し、前記各々のアイテムについて前記抽出されたスコアを結合することにより、前記アイテムのランク付けを行うステップ（８０１乃至８０８）と
を備えたことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、
前記受け取られたカレントサーチ結果の中で特定されたアイテムに、そのアイテムのランク付けの値が単調的に減少して行く順位を付けるステップをさらに含むことを特徴とする方法。
【請求項３】
請求項１または２に記載の方法において、
受け取られたカレントサーチ結果の中で特定されたアイテムのランク付けの値を使用して、前記カレントクエリーに含まれる１または複数のアイテムについて、最も高いスコアを有するアイテムを選択するステップ（９０１乃至９０７）をさらに含むことを特徴とする方法。
【請求項４】
請求項３に記載の方法において、前記選択するステップ（９０１乃至９０７）は、前記受け取られたカレントサーチ結果の中で特定されたアイテムのうち、ランク付けの値があらかじめ定めた最小のランク付けの値を超えている前記アイテムのすべてを含むサブセットを作成することを特徴とする方法。
【請求項５】
請求項１乃至４のいずれか１項に記載の方法において、
アイテムに関する追加情報を表示するために、前記多数のアイテムの１つのスコアを、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとにインクリメントするステップ（７０１乃至７０８）をさらに含むことを特徴とする方法。
【請求項６】
請求項１乃至５のいずれか１項に記載の方法において、
前記アイテムを購入するために、前記多数のアイテムの１つのスコアを、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとにインクリメントするステップ（７０１乃至７０８）をさらに含むことを特徴とする方法。
【請求項７】
請求項１乃至６のいずれか１項に記載の方法において、
暫定購入リストに前記アイテムを追加するために、前記多数のアイテムの１つのスコアを、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとにインクリメントするステップ（７０１乃至７０８）をさらに含むことを特徴とする方法。
【請求項８】
請求項１乃至７のいずれか１項に記載の方法において、
前記アイテムに関して表示された詳細情報の一部を見るために、前記多数のアイテムの１つのスコアを、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとにインクリメントするステップ（７０１乃至７０８）をさらに含むことを特徴とする方法。
【請求項９】
請求項１乃至８のいずれか１項に記載の方法において、
前記ユーザが前記アイテムに関する詳細情報を表示しているときの時間単位に基づいて、前記多数のアイテムの１つのスコアをインクリメントするステップ（７０１乃至７０８）をさらに含むことを特徴とする方法。
【請求項１０】
カレントサーチ結果の中のアイテムをランク付けるシステムであって、
多数のサーチ用語の各々について、スコアを、メモリに格納されたアイテムレーティングテーブルに記録する手段であって、前記スコアは、前記サーチ用語を含む以前のクエリーから得られた以前のサーチ結果において返された多数のアイテムの各々をユーザが選択した頻度を示し、前記多数のアイテムの各々のスコアは、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとにインクリメントされる手段と、
入出力デバイスを介して、カレントクエリーとカレントサーチ結果を受け取る手段であって、受け取られたカレントクエリーは前記多数のサーチ用語のうち１または複数の用語を含んでおり、受け取られたカレントサーチ結果は、前記多数のアイテムの中で、前記受け取られたカレントクエリーを満足する複数のアイテムを特定している手段と、
前記アイテムレーティングテーブルを参照して、前記受け取られたカレントクエリーに含まれる１または複数のサーチ用語に対応する前記受け取られたカレントサーチ結果の中で特定された複数のアイテムの各々について、以前のクエリーから得られた以前のサーチ結果において返されたアイテムの前記選択した頻度を示すスコアを抽出し、前記各々のアイテムについて前記抽出されたスコアを結合することにより、前記アイテムのランク付けを行う手段と
を備えたことを特徴とするシステム。
【請求項１１】
カレントサーチ結果の中のアイテムをランク付ける方法であって、ＣＰＵとメモリと入出力デバイスとを有するコンピュータシステムに前記方法を実行させるための命令が格納されたコンピュータ読み取り可能記録媒体において、前記方法は、
多数のサーチ用語の各々について、スコアを、前記メモリに格納されたアイテムレーティングテーブルに記録するステップ（２０１乃至２０８）であって、前記スコアは、前記サーチ用語を含む以前のクエリーから得られた以前のサーチ結果において返された多数のアイテム（３０１乃至３０６）の各々についてユーザが選択した頻度を示し、前記多数のアイテムの各々のスコアを、前記以前のサーチ結果の１つについて前記ユーザが前記アイテムを選択するごとに、前記ＣＰＵがインクリメントするステップと、
前記ＣＰＵが前記入出力デバイスを介して、カレントクエリーとカレントサーチ結果を受け取るステップであって、受け取られたカレントクエリーは前記多数のサーチ用語のうち１または複数の用語を含んでおり、受け取られたカレントサーチ結果は、前記多数のアイテムの中で、前記受け取られたカレントクエリーを満足する複数のアイテムを特定しているステップと、
前記アイテムレーティングテーブルを参照して、前記受け取られたカレントクエリーに含まれる１または複数のサーチ用語に対応する前記受け取られたカレントサーチ結果の中で特定された複数のアイテムの各々について、以前のクエリーから得られた以前のサーチ結果において返されたアイテムの前記選択した頻度を示すスコアを、前記ＣＰＵが抽出し、前記各々のアイテムについて前記抽出されたスコアを結合することにより、前記アイテムのランク付けを行うステップ（８０１乃至８０８）と
を備えたことを特徴とするコンピュータ読み取り可能記録媒体。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、クエリー（query：照会、問い合わせ）処理の分野に関する。
【０００２】
（発明の背景）
多くのワールドワイドウェブ（World Wide Web）サイトでは、ユーザが、はるかに大きなアイテムの領域の中から、関心のある少数のアイテムを特定するためにサーチを行うことを可能にしている。1つの例として、いくつかのウェブインデックスサイトでは、ユーザが既知の多数のウェブサイトの中から、特定のウェブサイトを探し出すことを可能にしている。同様に、書籍販売業者などの、多くのオンライン販売業者では、販売業者から購入することができる全製品の中から特定の製品を、ユーザが探し出すことを可能にしている。多くの場合、ユーザは、最終的にはアイテムの領域全体の中から１つのアイテムを見つけるためにサーチを行っている。
【０００３】
サーチを行うために、ユーザは１つまたは２つ以上のクエリー用語（query terms）を含むクエリーを提出している。また、このクエリーは、どのアイテムの領域をサーチするのかを明示的または黙示的に指定している。例えば、ユーザは、書籍の題名中の単語であると確信している用語を含むクエリーを、オンライン書籍販売業者に提出することがある。クエリーサーバプログラム (query server program) は、クエリーを処理し、そのクエリーの用語に一致するアイテムをドメインの中から特定する。クエリーサーバプログラムによって特定されたアイテムは、クエリー結果 (query result) と総称されている。この例では、クエリー結果は、その題名にクエリー用語の一部または全部が含まれている書籍のリストになっている。クエリー結果は、典型的には、アイテムリストとしてユーザに表示される。このリストは、さまざまな方法で配列することが可能になっている。例えば、各書籍の題名、著者、または発行日などの、各アイテムのプロパティ（property）に基づいて、アルファベット順または数字順に配列することが可能になっている。別の例として、このリストは、特定された各々のアイテムがクエリーの用語にどの程度まで一致しているかに基づいて配列されることもある。
【０００４】
クエリーの対象となる領域が多数のアイテムを含んでいるときは、クエリー結果は、数十または数百のアイテムを含んでいるのが普通である。ユーザが1つのアイテムを見つけるためにサーチを行っている場合には、従来の方法を応用してクエリー結果を配列しようとすると、しばしば探している１または複数アのイテムが、クエリー結果の先頭に置かれないために、ユーザは、探しているアイテムにたどり着く前に、クエリー結果に含まれる他の多数のアイテムを順々に読んでいかなければならない。従来の方法でクエリー結果を配列すると、上述した問題があるために、共通のおよび個別の、ユーザの行動に従ってクエリー結果を自動的に配列するようにした新規で、もっと効果的な方法があると、非常に便利である。
【０００５】
さらに、どのアイテムによっても満たされないクエリーを、ユーザが指定することもよく行われている。このようなことが起こるのは、例えば、ユーザが範囲を非常に狭く詳細に記述したクエリーを提出した場合や、ユーザがクエリーの中で、用語をタイプミスしまたは記憶違いをした場合である。このような場合、従来の方法では、クエリーを満足するアイテムだけがユーザに提示されるので、どのアイテムもユーザに提示されないことになる。クエリーの提出に応答してどのアイテムもユーザに提示されないときは、ユーザは、サーチエンジンに失望し、その継続的使用を断念する場合さえある。従って、クエリーに完全に一致するアイテムがないときでも、クエリー中の用語の少なくとも一部に関係するアイテムを表示する方法があると、非常に便利である。
【０００６】
上記要求を満たすために、いくつかのサーチエンジンは、空でない結果セットが得られるまで、クエリーを効果的に自動的に修正する方法を採用している。例えば、あるサーチエンジンは、接続語、つまり、ANDで接続された用語を、最終的に、そのクエリーに対するアイテムを含んでいる結果セットが得られるまで、複数用語のクエリーから段階的に削除している。この方法によると、クエリー用語が恣意的に削除されたとき、正しい用語を選択するための重要な情報が失われるという問題がある。その結果、最初の空でない結果セットは、非常に大きくなり、最初のクエリーとは無関係のアイテムが占める割合が、全体的に大きくなっている。そのため、クエリーに完全に一致するアイテムがないときでも、クエリーに含まれる用語の少なくとも一部に関係する用語を表示するようにする、もっと効果的な方法があると、非常に便利である。
【０００７】
（発明の概要）
本発明は、カレントクエリーに最も関連性のあるアイテムを、類似のクエリーに関して選択されたアイテムに基づいて特定するソフトウェア機能（software facility）（「本発明の機能（the facility）」）を提供している。本発明の機能は、好ましくは、アイテムが１または複数のクエリー用語を指定しているカレントクエリーとの関連性のレベルを示すアイテムのランク付けの値を生成する。本発明の機能は、レーティング関数（rating function）から得られたレーティングスコア（rating scores）を結合することによって、アイテムのランク付けの値を生成し、レーティングスコアの各々は、そのアイテムと、ランク付け値の１つを含むクエリーとの関連性レベルに対応している。レーティング関数は、好ましくは、アイテムと用語を結合したもののレーティングスコアを、本発明の機能によって生成されたレーティングテーブル（rating table）から取り出す。レーティングテーブルに入っているスコアは、好ましくは、個々のアイテムと用語ごとに、その特定の用語を含んでいるクエリーに対して得られたクエリー結果において、アイテムが特定されているとき、ユーザがそのアイテムをどのような頻度で選択したかを示している。
【０００８】
いくつかの異なる実施形態によっては、本発明の機能は、レーティングスコアを使用して、クエリー結果に含まれる各々のアイテムごとにランク付けの値を生成するようにしたもの、あるいは比較的少数のアイテムのランク付けの値を生成するために、最高ランク付けの値を有する少数のアイテムを選択するようにしたものがある。クエリー結果に含まれる特定のアイテムのランク付けの値を生成するために、本発明の機能は、そのアイテムとクエリーの用語に対応するレーティングスコアを結合する。クエリー結果に含まれる各アイテムのランク付けの値を生成することを目標としている実施形態では、本発明の機能は、好ましくは、クエリー結果内のアイテムを通るループに入り、各々のアイテムごとに、そのアイテムとクエリー中の用語のいずれかに対応するレーティングスコアのすべてを結合するようにしている。他方、クエリー結果の中で最大のランク付けの値を有する少数のアイテムを選択することを目標としている実施形態では、本発明の機能は、好ましくは、クエリー内のアイテムを通るループに入り、各々のアイテムごとに、その用語と任意のアイテムの、少数の最高レーティングスコアを特定するようにしている。そして、本発明の機能は、各々のアイテムごとに特定されたスコアを結合し、比較的少数のアイテムのランク付けの値を生成する。なお、このアイテムの中には、クエリー結果の中で特定されなかったアイテムを含めることも可能である。実際には、本発明の上記実施形態によれば、クエリー結果が空である場合でも、すなわち、クエリーを完全に満足するアイテムがないときでも、アイテムのランク付け値を生成し、アイテムを表示することが可能である。
【０００９】
本発明の機能は、少なくとも一部のアイテムのランク付けの値を生成した後、好ましくは、クエリー結果のアイテムをランク付けの値の降順に配列する。本発明の機能は、ランク付け値を使用して、クエリー結果に含まれるアイテムを少数のアイテムにサブセット化することも可能である。本発明の機能は、上述のようにクエリー結果内のアイテムを配列および／またはサブセット化することを、アイテムの属性に従ってではなく、共通のおよび個別のユーザの行動に従って行うので、ユーザは、自分が探している特定の１または複数のアイテムをクエリー結果の中から素早く見つける可能性が大幅に増加する。例えば、"human"および "dynamic"のクエリー用語を含んでいるクエリーに対するクエリー結果が、人間行動学（human dynamics）についての書籍、および粒子力学（particle dynamics）が人間（human beings）に及ぼす影響についての書籍を含んでいるとき、先に、"human"の用語を含んでいるクエリーに対して得られたクエリー結果からユーザが行った選択は、これらのユーザが人間行動学の書籍を選択する頻度が、粒子力学の書籍を選択する頻度よりもはるかに高いことを示していたとする。この場合、本発明の機能は、人間行動学の書籍を、粒子力学の書籍よりも高いランクに置くので、人間行動学の方に関心のあるユーザは、より簡単にその書籍を選択することができる。本発明の機能がもつ利点は、典型的にユーザによってよく出される単一用語のクエリーに対して生成される、多くの雑多なクエリー結果と併用すると特に便利である。
【００１０】
本発明の種々実施形態は、クエリー結果の中で特定されたアイテムについて、ユーザが行う種々の選択アクションにおけるレーティングスコアに基づいている。この中には、ユーザがアイテムに関する追加情報を表示したかどうか、そのアイテムの追加情報を見るのにユーザがどれだけの時間を消費したか、そのアイテムの追加情報内でユーザがいくつのハイパーリンクをたどっていったか、ユーザはショッピングバスケットにそのアイテムを加えたかどうか、およびユーザはそのアイテムを最終的に購入したかどうか、といったことが含まれている。本発明の実施形態によれば、クエリー結果とは無関係の選択アクションも考慮されている。例えば、クエリー結果からアイテムを選択したかではなく、そのアイテムのアイテム識別子をタイプしたかどうかが考慮される。また、本発明の別の実施形態によれば、クエリーを出したユーザについて、同じ性別、年齢、所得、または地理別のカテゴリなどの種々の人口統計学的グループに属するユーザ別にレーティングスコアをとり、それを適用することによって、ランク付けプロセス情報に組み込んでいる。ある種の実施形態では、特定ユーザに関する行動情報も組み込まれている。さらに、レーティングスコアは、共通のおよび個別のユーザの好みを反映している、種々のタイプの情報を結合するレーティング関数から得ることも可能である。本発明のいくつかの実施形態では、異なる時間フレームで出されたクエリーについて、特殊な方法でレーティングスコア情報に組み入れるようにしている。
【００１１】
（発明の実施の形態）
本発明は、カレントクエリーに最も関連性のあるアイテムを、類似のクエリーに関して選択されたアイテムに基づいて特定するソフトウェア機能（「本発明の機能」）を提供している。本発明の機能は、好ましくは、アイテムが１または複数のクエリー用語を指定しているカレントクエリーとの関連性のレベルを示すアイテムのランク付けの値を生成する。本発明の機能は、レーティング関数から得られたレーティングスコアを結合することによって、アイテムのランク付けの値を生成し、レーティングスコアの各々は、そのアイテムと、ランク付け値の１つを含むクエリーとの関連性レベルに対応している。レーティング関数は、好ましくは、アイテムと用語を結合したもののレーティングスコアを、本発明の機能によって生成されたレーティングテーブルから取り出す。レーティングテーブルに入っているスコアは、好ましくは、個々のアイテムと用語ごとに、その用語を含んでいるクエリーに対して得られたクエリー結果において、アイテムが特定されているとき、ユーザがそのアイテムをどのような頻度で選択したかを示している。
【００１２】
いくつかの異なる実施形態によっては、本発明の機能は、レーティングスコアを使用して、クエリー結果に含まれる各々のアイテムごとにランク付けの値を生成するようにしたもの、あるいは比較的少数のアイテムのランク付けの値を生成するために、最高ランク付けの値を有する少数のアイテムを選択するようにしたものがある。クエリー結果に含まれる特定のアイテムのランク付けの値を生成するために、本発明の機能は、そのアイテムとクエリーの用語に対応するレーティングスコアを結合する。クエリー結果に含まれる各アイテムのランク付けの値を生成することを目標としている実施形態では、本発明の機能は、好ましくは、クエリー結果内のアイテムを通るループに入り、各々のアイテムごとに、そのアイテムとクエリー中の用語のいずれかに対応するレーティングスコアのすべてを結合するようにしている。他方、クエリー結果の中で最大のランク付けの値を有する少数のアイテムを選択することを目標としている実施形態では、本発明の機能は、好ましくは、クエリー内のアイテムを通るループに入り、各々のアイテムごとに、その用語と任意のアイテムの、少数の最高レーティングスコアを特定するようにしている。そして、本発明の機能は、各々のアイテムごとに特定されたスコアを結合し、比較的少数のアイテムのランク付けの値を生成する。なお、このアイテムの中には、クエリー結果の中で特定されなかったアイテムを含めることも可能である。実際には、本発明の上記実施形態によれば、クエリー結果が空である場合でも、すなわち、クエリーを完全に満足するアイテムがないときでも、アイテムのランク付け値を生成し、アイテムを表示することが可能である。
【００１３】
本発明の機能は、少なくとも一部のアイテムのランク付けの値を生成した後、好ましくは、クエリー結果のアイテムをランク付けの値の降順に配列する。本発明の機能は、ランク付け値を使用して、クエリー結果に含まれるアイテムを少数のアイテムにサブセット化することも可能である。本発明の機能は、上述のようにクエリー結果内のアイテムを配列および／またはサブセット化することを、アイテムの属性に従ってではなく、共通のおよび個別のユーザの行動に従って行うので、ユーザは、自分が探している特定の１または複数のアイテムをクエリー結果の中から素早く見つける可能性が大幅に増加する。例えば、"human"および "dynamic"のクエリー用語を含んでいるクエリーに対するクエリー結果が、人間行動学（human dynamics）についての書籍、および粒子力学（particle dynamics）が人間（human beings）に及ぼす影響についての書籍を含んでいるとき、先に、"human"の用語を含んでいるクエリーに対して得られたクエリー結果からユーザが行った選択は、これらのユーザが人間行動学の書籍を選択する頻度が、粒子力学の書籍を選択する頻度よりもはるかに高いことを示していたとする。この場合、本発明の機能は、人間行動学の書籍を、粒子力学の書籍よりも高いランクに置くので、人間行動学の方に関心のあるユーザは、より簡単にその書籍を選択することができる。本発明の機能がもつ利点は、典型的にユーザによってよく出される単一用語のクエリーに対して生成される、多くの雑多なクエリー結果と併用すると特に便利である。
【００１４】
本発明の種々実施形態は、クエリー結果の中で特定されたアイテムについて、ユーザが行う種々の選択アクションにおけるレーティングスコアに基づいている。この中には、ユーザがアイテムに関する追加情報を表示したかどうか、そのアイテムの追加情報を見るのにユーザがどれだけの時間を消費したか、そのアイテムの追加情報内でユーザがいくつのハイパーリンクをたどっていったか、ユーザはショッピングバスケットにそのアイテムを加えたかどうか、およびユーザはそのアイテムを最終的に購入したかどうか、といったことが含まれている。本発明の実施形態によれば、クエリー結果とは無関係の選択アクションも考慮されている。例えば、クエリー結果からアイテムを選択したかではなく、そのアイテムのアイテム識別子をタイプしたかどうかが考慮される。また、本発明の別の実施形態によれば、クエリーを出したユーザについて、同じ性別、年齢、所得、または地理別のカテゴリなどの種々の人口統計学的グループに属するユーザ別にレーティングスコアをとり、それを適用することによって、ランク付けプロセス情報に組み込んでいる。ある種の実施形態では、特定ユーザに関する行動情報も組み込まれている。さらに、レーティングスコアは、共通のおよび個別のユーザの好みを反映している、種々のタイプの情報を結合するレーティング関数から得ることも可能である。本発明のいくつかの実施形態では、異なる時間フレームで出されたクエリーについて、特殊な方法でレーティングスコア情報に組み入れるようにしている。
【００１５】
図1は、本発明の機能が、好ましくはそこで実行されるコンピュータシステムを示す詳細ブロック図である。図1に示すように、コンピュータシステム１００は、中央処理ユニット（CPU）１１０、入出力デバイス１２０、およびコンピュータメモリ（以下、「メモリ」という。）１３０を備えている。入出力デバイスとしては、ハードディスクドライブなどのストレージデバイス１２１、CD-ROMなどのコンピュータ可読媒体で提供される、本発明の機能も含む、ソフトウェアプロダクトをインストールするために使用できるコンピュータ可読メディアドライブ１２２、およびコンピュータシステム１００を他のコンピュータシステム（図示せず）に接続するためのネットワークコネクション１２３がある。メモリ１３０は、好ましくは、クエリーからクエリー結果を生成するクエリーサーバ１３１、クエリー結果に含まれるアイテムを、共通のユーザの好みに応じて自動的にランク付けするクエリー結果ランク付け機能（query result ranking facility）１３２、および本発明の機能によって使用されるアイテムレーティングテーブル１３３を格納している。本発明の機能は、好ましくは、上述したように構成されているコンピュータシステム上に実装されているが、当業者ならば理解されるように、本発明の機能は、異なる構成をもつコンピュータシステム上に実装させることも可能である。
【００１６】
本発明の機能は、好ましくは、新しいレーティングテーブルを周期的に生成し、クエリー結果が送られてきたとき、最後に生成されたレーティングテーブルを使用して、そのクエリー結果内のアイテムをランク付けする。図2は、新しいレーティングテーブルを生成するために、本発明の機能によって実行される好ましいステップを示すフロー図である。ステップ２０１で、本発明の機能は、好ましくは、クエリー用語とアイテム識別子の特定の結合に対するレーティングスコアを、各々が示しているエントリを収めておくレーティングテーブルを初期化する。このレーティングテーブルは、その初期化時にはエントリをもっていない。ステップ２０２で、本発明の機能は、レーティングテーブルが生成される間の期間中に、ユーザがクエリー結果から行ったアイテム選択のすべてを特定する。レーティングテーブルは、日、週、月などの時間間隔の間に行われるクエリーに対して生成することができる。このクエリーグループは、クエリーの「レーティングセット」と呼ばれる。本発明の機能は、ステップ２０２でこれらクエリー結果を生み出したクエリーの用語も特定する。ステップ２０２の実行については、図7を参照して後に詳しく説明する。ステップ２０４乃至２０８で、本発明の機能は、時間間隔の間にユーザがクエリー結果からアイテムを選択するたびにループに入る。ステップ２０４で、本発明の機能は、クエリー結果を生み出し、そこでアイテム選択が行われたクエリーで使用された用語を特定する。ステップ２０５乃至２０７で、本発明の機能は、クエリー内の用語ごとにループに入る。ステップ２０６で、本発明の機能は、カレントの用語とアイテムに対応するレーティングテーブル内のレーティングスコアを大きくする。エントリが、まだ用語とアイテムに対応するレーティングテーブルに存在しない場合は、本発明の機能は、用語とアイテムのための新しいエントリをレーティングテーブルに追加する。レーティングスコアを大きくすることは、好ましくは、１などの増分値を、用語とアイテムの既存のレーティングスコアに加えることによって行われる。ステップ２０７で、処理すべき追加アイテムが残っていれば、本発明の機能はループしてステップ２０５に戻り、クエリー内の次のアイテムを処理し、残っていなければ、本発明の機能は、ステップ２０８から続行する。ステップ２０８で、処理すべき追加のアイテム選択が残っていれば、本発明の機能は、ループしてステップ２０３に戻り、次のアイテム選択を処理し、残っていなければ、これらのステップは終了する。
【００１７】
図３と図４は、ステップ２０６（図２）に関してアイテムレーティングテーブルの増補を示すテーブル図である。図３は、増補前のアイテムレーティングテーブルの状態を示している。同図に示すように、テーブル３００は、エントリ３０１乃至３０６を含む複数のエントリを収めている。各エントリは、クエリー用語とアイテム識別子の特定の結合に対するレーティングスコアを収めている。例えば、エントリ３０２は、用語"dynamics"アイテム識別子"1883823064"に対するスコアが"22"であることを示している。用語"dynamics"を含んでいるクエリーから得られたクエリー結果において、アイテム識別子"1883823064"をもつアイテムが、アイテム識別子"9676530409"よりも頻繁に、アイテム識別子"0801062272"よりもはるかに頻繁に、ユーザによって選択されたことは、エントリ３０１乃至３０３を調べることにより知ることができる。別の実施形態では、本発明の機能は、スパースアレイ（sparse array）のような、他の種々データ構造を使用してレーティングスコアを格納している。
【００１８】
アイテムレーティングテーブル３００を増補するとき、本発明の機能は、アイテム識別子"18838230604"をもつアイテムのクエリー結果からの選択が、クエリー用語"human"と"dynamics"を指定しているクエリーから得られたものであることを特定する。図4は、アイテムレーティングテーブルが、その選択を反映するように本発明の機能によって増補された後の、アイテムレーティングテーブルの状態を示している。アイテムレーティングテーブル４００内のエントリ４０５をアイテムレーティングテーブル３００内のエントリ３０５と比較することによって、本発明の機能がこのエントリのスコアを"45"から"46"にインクリメントしたことを確かめることができる。同様に、本発明の機能が、このアイテム識別子と用語"dynamics"に対するレーティングスコアを"22"から"23"にインクリメントしている。本発明の機能は、この時間間隔の間に特定したクエリー結果から、他の選択に対しても、レーティングテーブルを同じように増補する。
【００１９】
図２に示すステップを使用して、新しいレーティングテーブルを初めから生成するのではなく、新しい選択情報が利用可能になるたびに、本発明の機能は、例えば、一日といったように、比較的短期間の異なる時間間隔の単位ごとに、好ましくは、別々のレーティングテーブルを生成し、維持する。新しい時間間隔の単位に対してレーティングテーブルが生成されるたびに、本発明の機能は、好ましくは、この新レーティングテーブルを、以前の時間間隔の単位に対する既存レーティングテーブルと結合して、もっと長い複合の時間間隔のレーティングテーブルを作成する。図５は、複合時間間隔のレーティングテーブルを時間間隔の単位に対するレーティングテーブルから生成することを示すテーブル図である。図５に示すように、レーティングテーブル５０１乃至５０６の各々は、8-Feb-98から13-Feb-98までの一日に対応している。新しい単位時間間隔が完了するたびに、本発明の機能は、そのの間にユーザが行った選択を反映している新しいレーティングテーブルを生成する。例えば、12-Feb-98の終了時に、本発明の機能はレーティングテーブル５０５を生成し、そこには、12-Feb-98の間にユーザが行ったすべての選択が反映されている。本発明の機能は、完了した単位時間間隔の新しいレーティングテーブルを生成した後、その単位時間間隔と共に終了する複合時間間隔の新しいレーティングテーブルも生成する。例えば、本発明の機能は、単位時間間隔12-Feb-98のレーティングテーブル５０５を生成した後、8-Feb-98から12-Feb-98までの複合時間管区可のレーティングテーブル５１５を生成する。本発明の機能は、好ましくは、複合時間間隔に対する上記レーティングテーブルを、複合時間間隔を構成する単位時間間隔のレーティングテーブルのエントリを結合し、対応するエントリのスコアを結合することによって、例えば、スコアを加算することによって生成する。本発明の一好適実施形態では、単位時間間隔が最近であるほど、そのレーティングテーブルとスコアは、そうでない単位時間間隔のレーティングテーブル内のスコアよりも、重く重み付けされる。クエリー結果をランク付けするとき、好ましくは、最も最近の複合時間間隔のレーティングテーブルが使用される。つまり、レーティングテーブル５１６の生成が可能になるまでは、本発明の機能は、好ましくは、レーティングテーブル５１５を使用してクエリー結果をランク付けする。レーティングテーブル５１６が生成されると、本発明の機能は、好ましくは、そのレーティングテーブル５１６を使用してクエリー結果をランク付けする。単位時間間隔と複合時間間隔のどちらも、その長さは、好ましくは、構成可能である。
【００２０】
図６は、複合時間間隔のレーティングテーブルを示すテーブル図である。図６に示すアイテムテーティングテーブル６００を図４に示すアイテムレーティングテーブル４００と比較すると理解できるように、レーティングテーブル６００の内容は、レーティングテーブル４００の内容を、単位時間間隔の他のいくつかのレーティングテーブルと結合したものを構成している。例えば、エントリ６０２のスコアは、"116"になっている。つまり、対応するエントリ４０２のスコアの約５倍になっている。さらに、レーティングテーブル４００には、用語"dynamics"とアイテム識別子"1887650024"のエントリがないが、複合時間間隔内の他の単位時間間隔の１つに対するレーティングテーブル内に対応するエントリが現れたとき、この用語とアイテム識別子の結合に対するエントリ６０７がテーブル６００に追加されている。
【００２１】
ユーザによる選択を特定するために本発明の機能によって使用されるプロセスは、本発明の機能によって使用された選択アクションの種類と、その選択アクションに関係するデータがどのように格納されたかによって決まる。１つの好適実施形態では、クエリー結果の中で特定されたアイテムに関する詳細情報を表示する要求が、選択アクションとして使用されている。この実施形態では、本発明の機能は、ウェブクライアントを使用するユーザのためにクエリー結果を生成するウェブサーバによって生成されたログからこの情報を抜き出し、ユーザがウェブクライアントを使用してアイテムを選択し、そのアイテムに関する詳細情報を表示できるようにしている。ウェブサーバは、ウェブクライアントから受け取り、それに応答したHTTPリクエストのすべての詳細をログに保存しているのが一般である。このようなログは、エントリから構成されているのが一般で、エントリごとに異なるHTTP要求に関する情報を記録している。このログは発生順に編成されているのが一般である。下に示すログエントリ１は、サンプルログエントリであり、クエリーを出したユーザに代わってウェブクライアントから送られてきたHTTPリクエストを示している。
【００２２】
1.  Friday, 13-Feb-98 16:59:27
2.  ユーザ識別子 = 82707238671
3.  HTTP_REFERER = http://www.amazon.com/book_query_page
4.  PATH_INFO = /book_query
5.  著者 = "Seagal"
6.  題名 = "Human Dynamics"
【００２３】
ログエントリ１
ログエントリ１の"PATH_INFO"行４に現れているキーワード"book_query"によって、このログエントリは、ユーザがクエリーを出したことに対応していることから明らかである。さらに、用語行５と６において、このクエリーは、用語"Seagal"、"Human"、および"dynamics"を含んでいることが明らかである。行２において、このエントリには、さらに、ユーザの識別子に対応するユーザ識別子を含み、この識別子は、実施形態によっては、ウェブサーバとのやりとりにも対応している場合がある。
【００２４】
ログエントリ１に記録されているHTTPリクエストを受け取ると、その応答として、クエリーサーバはクエリーに対するクエリー結果を生成し、そのクエリーを送ってきたウェブクライアントにクエリー結果を返送する。その後、ユーザは、クエリー結果の中で特定されたアイテムを選択し、選択したアイテムに関する詳細情報を表示する別のHTTPリクエストがウェブクライアントから出される。ログエントリ２は、ログ内のログエントリ１のあとに置かれているもので、そこには、上記２番目のHTTPリクエストが記載されている。
【００２５】
1.  Friday, 13-Feb-98 17:02:39
2.  ユーザ識別子 = 82707238671
3.  HTTP_REFERER = http://www.amazon.com/book_query
4.  PATH_INFO = /ISBN=1883823064
【００２６】
ログエントリ２
ログエントリ２の行２のユーザ識別子を、ログエントリ１の行２のユーザ識別子と比較すると明らかであるように、これらのログエントリは同じユーザと時間フレームに対応している。ログエントリ２の行４の"PATH_INFO"に示すように、ユーザは、アイテム識別子("ISBN") "1883823064" をもつアイテムを選択している。また、行３の"HTTP_REFERER"にキーワード"book_query"が現れていることから、このアイテムの選択は、クエリー結果から行われたものであることが明らかである。
【００２７】
ユーザによる選択に関する情報が、上述したようなウェブサーバログに格納される場合には、本発明の機能は、好ましくは、これらのログを走査することによってユーザによる選択を特定する。このような走査は、特定の時間間隔にわたるログが完全に生成された後にバッチ処理モードで行うことも、ログエントリがその生成と同時に処理されるようにリアルタイム処理モードで行うこともできる。
【００２８】
図７は、ウェブサーバログ内のユーザによる選択を特定するために、本発明の機能によって実行される好ましいステップを示すフロー図である。ステップ７０１で、本発明の機能は、第１ポインタをログの先頭、またはログの始まりに置く。その後、本発明の機能は、第１ポインタがログの終わりに到達するまでステップ７０２乃至７０８を繰り返す。ステップ７０３で、本発明の機能は、第１ポインタに対して前方向に、次のアイテム選択イベントまで走査する。上述したログエントリの用語において、ステップ７０３では、"book_query"などのサーチエントリを示すキーワードをその"HTTP_REFERER"行に含まれているエントリが見つかるまで、ログエントリを前方向に走査して行く。ステップ７０４で、本発明の機能は、選択されたアイテムのIDと、そのアイテムを選択したユーザを特定しているセッション識別子とを、そのアイテム選択イベントから抜き出す。上述したログエントリの用語において、このステップでは、ログエントリの"PATH_INFO"行にあるストリング"ISBN="の後に置かれた10桁の番号が読み取られ、ログエントリの「ユーザ識別子」行からユーザ識別子が読み取られる。従って、ログエントリ２では、本発明の機能は、アイテム識別子"1883823064"とセッション識別子"82707238761"を抜き出す。ステップ７０５で、本発明の機能は、第２ポインタの位置を第１ポインタの位置と同期させる。つまり、本発明の機能は、第２ポインタが第１ポインタと同じログエントリを指すようにする。ステップ７０６で、本発明の機能は、第２ポインタに対し逆方向に、一致するユーザ識別子をもつクエリーイベントまで走査する。上述したログエントリの用語には、本発明の機能は、その"PATH_INFO"行にキーワード"book_query" を有し、およびその「ユーザ識別子」行に一致するユーザ識別子を有するログエントリまで逆方向に走査する。ステップ７０７で、本発明の機能は、第２ポインタが指しているクエリーイベントからクエリーの用語を抜き出す。上述のクエリーログエントリの場合には、本発明の機能は、第２ポインタが指しているクエリーログエントリから、"PATH_INFO"行の次の行に置かれている引用符付きの単語を抜き出す。従って、ログエントリ１では、本発明の機能は、用語 "Seagal"、"Human"、および"Dynamics" を抜き出す。ステップ７０８で、第１ポインタがログの終わりまでまだ到達していなければ、本発明の機能はループしてステップ７０２に戻ってログの処理を続け、到達していれば、これらのステップは完了する。
【００２９】
他の選択アクションが本発明の機能によって使用されるときは、選択に関する情報をウェブサーバログから抜き出す作業が若干多くなることがある。例えば、本発明の機能が、アイテムの購入を選択アクションとして使用する場合には、ログエントリ１のように、ユーザによるアイテムに関する詳細情報の要求を記述しているログエントリを特定するのではなく、本発明の機能は、「ショッピングバスケット」内のアイテムを購入する要求を記述しているログエントリを特定する。その後、本発明の機能は、ログ内を逆方向に走査し、ショッピングバスケットにアイテムを追加する要求とショッピングバスケットからアイテムを取り除く要求を記述しているエントリを使用して、購入要求時にどのアイテムがショッピングバスケットに残っていたかを判断する。その後、本発明の機能は、ログ内の逆方向の走査を続け、ログエントリ２のように、クエリーを記述しているログエントリを特定し、サーチ用語を抜き出す。
【００３０】
アイテム購入が本発明の機能によって使用される選択アクションである場合には、ウェブサーバログだけに頼るのではなく、本発明の機能は、別の方法としてウェブサーバログとは別のデータベースを使用して、各購入トランザクションでどのアイテムが購入されたかを判断する。データベースからのこの情報は、次に、アイテムがそこから購入のために選択されるクエリーに対するクエリー用語を収めているログエントリと突き合わされる。このハイブリッド方法は、ウェブサーバログと別データベースを使用するので、さまざまな種類の選択アクションのどれに対しても使用することができる。さらに、ウェブサーバログとは別のデータベースが、レーティングテーブルを増補するために必要な情報をすべて含む場合には、本発明の機能は、データベースだけを使用できるので、ウェブサーバログを走査しないで済むことになる。
【００３１】
本発明の機能は、この機能が生成したレーティングテーブルを使用して、新クエリー結果におけるアイテムのランク付けの値を生成する。図８は、クエリー結果内における各アイテムのランク付けの値を生成することによって、レーティングテーブルを使用してクエリー結果を配列するために、本発明の機能によって実行される好ましいステップを示すフロー図である。ステップ８０１乃至８０７で、本発明の機能は、クエリー結果の中で特定された各々のアイテムごとにループに入る。ステップ８０２で、本発明の機能は、カレントアイテムのランク付けの値を初期化する。ステップ８０３乃至８０５で、本発明の機能は、クエリーに現れた各々のアイテムごとにループに入る。ステップ８０４で、本発明の機能は、カレント用語とアイテムの、最も最近に生成されたレーティングテーブルに含まれるレーティングスコアを判断する。ステップ８０５で、未処理のまま残っているクエリーの用語があれば、本発明の機能はループしてステップ８０３まで戻り、残っていなければ、本発明の機能はステップ８０６から続行する。ステップ８０６で、本発明の機能はカレントアイテムのスコアを結合し、そのアイテムのランク付けの値を生成する。１つの例として、図６に示すように、アイテム識別子"1883823064"をもつデータを処理するとき、本発明の機能は、そのアイテムと用語"dynamics"のエントリ６０２から抜き出したストア"116"と、そのアイテムと用語"human"のエントリ６０５から抜き出したスコア"211"とを結合する。ステップ８０６で、好ましくは、これらのスコアは加算される。なお、これらのスコアは他の方法で結合することも可能である。具体的には、スコアは、アイテムに一致するクエリー用語の数をもっと直接的に反映するように調整し、他のアイテムよりも一致するクエリー用語の多いアイテムがランク付けで有利になるようにすることできる。ステップ８０７で、未処理のまま残っているアイテムがあれば、本発明の機能は、ループしてステップ８０１に戻って次のアイテムを処理し、そうでなければ、本発明の機能はステップ８０８から続行する。ステップ８０８で、本発明の機能は、クエリー結果の中で特定されたアイテムを、ステップ８０６で生成されたアイテムのランク付けの値に従って表示する。ステップ８０８では、好ましくは、クエリー結果内のアイテムは、そのラン付け値の降順にソートされ、および/またはクエリー結果内のアイテムは、上限のランク付けの値を越えるアイテムだけを含むように、あるいは最高のランク付けの値をもつ所定数のアイテムだけを含むようにサブセット化される。ステップ８０８の後、これらのステップは完了する。
【００３２】
図９は、クエリー結果の中で最高ランク付けの値をもつ少数のアイテムをレーティングテーブルを使用して選択するために、本発明の機能によって実行される好ましいステップを示すフロー図である。ステップ９０１乃至９０３で、本発明の機能は、クエリーの中の各々の用語ごとにループに入る。ステップ９０２で、本発明の機能は、カレント用語のテーブルエントリの中から、３つの最高レーティングスコアをもつエントリを特定する。例えば、図６に示すように、用語"dynamics"に対応するアイテムレーティングテーブル６００内のエントリが、エントリ６０１、６０２、６０３、および６０７だけであれば、本発明の機能は、エントリ６０１、６０２および６０３を特定することになるが、これは、これらのエントリが３つの最高レーティングスコアをもつ用語"dynamics"のエントリであるからである。別の好ましい実施形態では、３以外の少数のテーブルエントリが使用されている。ステップ９０３で、未処理のままクエリーに残っている別の用語があれば、本発明の機能はループしてステップ９０１に戻り、クエリー内の次の用語を処理し、そうでなけば、本発明の機能はステップ９０４から続行する。ステップ９０４乃至９０６で、本発明の機能は、特定されたエントリの中でユニークなアイテムごとにループに入る。ステップ９０５で、本発明の機能は、特定されたエントリの中の、そのアイテムのスコアのすべてを結合する。ステップ９０６で、特定されたエントリの中で未処理のまま残っている別のユニークなアイテムがあれば、本発明の機能はループしてステップ９０４に戻り、次のユニークなアイテムを処理し、そうでなければ、本発明の機能はステップ９０７から続行する。１つの例として、アイテムレーティングテーブル６００の中で、本発明の機能が、用語"dynamics"に対応するエントリ６０１、６０２および６０３を選択し、用語"human"に対応するエントリ６０４、６０５および６０６を選択していれば、本発明の機能は、アイテム識別子"1883823064"をもつアイテムのスコア"116"と"211"を結合し、残りのアイテム識別子については、次のようにシングルスコアを使用することになる。すなわち、アイテム識別子"0814403484"をもつアイテムには"77"、アイテム識別子"9676530409"をもつアイテムには"45"、アイテム識別子"6303702473"をもつアイテムには"12"、アイテム識別子"0801062272"をもつアイテムには"4"を使用する。ステップ９０７で、本発明の機能は、３つの最高結合スコアをもつアイテムを選択し、目立つように表示する。別の実施形態では、本発明の機能は、３以外の最高結合スコアをもつ少数のアイテムを選択する。上述した例では、本発明の機能は、アイテム識別子"1883823064"、"0814403484"、および"9676530409"をもつアイテムを選択し、目立つように表示することになる。本発明の機能は、アイテムがクエリー結果に存在するか否かに関係なく、ステップ９０７でアイテムを選択するので、本発明の機能は、クエリー結果に存在しないアイテムを選択することができる。この実施形態のこの側面は、本発明の機能の起動時に完全なクエリー結果が利用できないような場合に特に利点がある。そのようなケースとして、例えば、クエリーを満足するアイテムの一部だけが、一度にクエリーサーバによって提供される場合がある���本発明のこの側面は、アイテムがクエリー結果に存在するか否かに関係なくアイテムを選択すると、本発明の機能は、クエリー結果が空である場合でも、つまり、クエリーを完全に満足するアイテムがないときでも、クエリーに関係するアイテムを選択し、ユーザに表示できるという別の利点がある。ステップ９０７の後、これらのステップは完了する。
【００３３】
以上、種々の好適実施形態を参照して本発明を図示し、説明してきたが、この分野の精通者ならば理解されるように、これらの実施形態は本発明の範囲を逸脱しない限り、形態と細部において種々態様に変更または改良することが可能である。例えば、本発明の機能は、あらゆるタイプのクエリー結果をランク付けるために使用することが可能である。本発明の機能は、各アイテムが選択される場合に、その選択に対してレーティングスコアをどれだけの量増加させるかを、種々の公式を使用して判断することが可能である。さらに、本発明の機能は、レーティングスコアを結合し、それをアイテムのランク付け値にするために種々の公式を採用することも可能である。また、本発明の機能は、種々の異なる種類の選択アクションを使用してレーティングテーブルを増補し、一度に２種類以上の選択アクションに対してレーティングテーブルを増補することも可能である。さらに、本発明の機能は、ソフトウェアエージェントや他のタイプの人工的ユーザのように、人間のユーザ以外のユーザによる選択を反映するようにレーティングテーブルを増補することも可能である。
【図面の簡単な説明】
【図１】  好ましくは、本発明の機能がそこで実行されるコンピュータシステムを示す詳細ブロック図である。
【図２】  新しいレーティングテーブルを生成するために本発明の機能によって実行される好ましいステップを示すフロー図である。
【図３】  アイテムレーティングテーブルをステップ２０６（図２）に従って増補することを示すテーブル図である。
【図４】  アイテムレーティングテーブルをステップ２０６（図２）に従って増補することを示すテーブル図である。
【図５】  複合時間間隔のレーティングテーブルを単位時間間隔のレーティングテーブルから生成することを示すテーブル図である。
【図６】  複合時間間隔のレーティングテーブルを示すテーブル図である。
【図７】  ウェブサーバログ内のユーザによる選択を特定するために本発明の機能によって実行される好ましいステップを示すフロー図である。
【図８】  クエリー結果に含まれる各アイテムのランク付けの値を生成することによって、レーティングテーブルを使用してクエリー結果を配列するために本発明の機能によって実行される好ましいステップを示すフロー図である。
【図９】  クエリー結果内にあって、最高のランク付けの値をもつ少数のアイテムを、レーティングテーブルを使用して選択するために本発明の機能によって実行される好ましいステップを示すフロー図である。
【図１】
0004792551.tif 000002
【図２】
0004792551.tif 000003
【図３】
0004792551.tif 000004
【図４】
0004792551.tif 000005
【図５】
0004792551.tif 000006
【図６】
0004792551.tif 000007
【図７】
0004792551.tif 000008
【図８】
0004792551.tif 000009
【図９】
0004792551.tif 000010