【文献】
大西 誠、外2名,オンラインニュースとツイートのリアルタイムマッチング手法,第8回データ工学と情報マネジメントに関するフォーラム (第14回日本データベース学会年次大会),日本,電子情報通信学会データ工学研究専門委員会 日本データベース学会 情報処理学会データベースシステム研究会,2016年 8月 8日,p.1−8
(58)【調査した分野】(Int.Cl.,DB名)
前記ドキュメントを検索するための条件を送信した送信元に対して、前記検索部によって検索された前記所定のドキュメント番号に対応するドキュメントを配信する配信部、
をさらに備え、
前記検索部は、
前記所定のドキュメント番号に対応するドキュメントとして、検索されるための条件が設定された広告コンテンツを検索し、
前記配信部は、
前記検索部によって検索された広告コンテンツを前記送信元に対して配信する、
ことを特徴とする請求項1〜8のいずれか一つに記載の検索装置。
【発明を実施するための形態】
【0010】
以下に、本願に係る検索装置、検索方法及び検索プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る検索装置、検索方法及び検索プログラムが限定されるものではない。また、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0011】
〔1.検索処理の一例〕
本願に係る検索装置に対応する広告装置100(
図5参照)は、ユーザ端末10(
図5参照)から送信されるクエリに基づいて、論理式が設定されたドキュメント群の中から、クエリと適合する論理式が設定されたドキュメントを検索するサーバ装置である。なお、クエリは、ドキュメントの検索に用いられる問い合わせ情報である。
図1の例の場合、ドキュメントは、広告コンテンツである。また、広告コンテンツに設定される論理式は、広告主によって、配信対象のユーザを選別するために設定される。また、実施形態において、クエリは、クエリの送信元であるユーザ端末10を操作するユーザに関する情報や、広告コンテンツが表示される広告面(例えば、ウェブページ)に関する情報等を含む。
【0012】
まず、
図1を用いて、実施形態に係る最小条件数について説明する。
図1は、実施形態に係る最小条件数の一例を説明するための図である。最小条件数とは、クエリがドキュメントに適合するための条件として最小限必要となる条件の数である。
図1に示した例では、最小条件数は、クエリがドキュメントに設定された論理式にヒットするために、クエリに最低限含まれていなければならない属性情報の数である。また、ユーザ端末10から送信されるクエリには、ユーザ端末10を操作するユーザの属性(例えば、性別や、年齢層など)が含まれる。なお、以下では、「クエリがドキュメントに設定された論理式にヒットする」を、単に「クエリがドキュメントにヒットする」と表記する場合がある。
【0013】
図1に示すように、検索対象となる広告コンテンツ50、51および52には、配信対象のユーザを選別するための論理式が設定されている。広告コンテンツ50、51および52に設定された論理式は、ユーザの属性情報と論理演算子の組み合わせによって構成される。具体的には、広告コンテンツ50、広告コンテンツ51および広告コンテンツ52には、「男性∧(20代∨30代)」、「女性∨20代」、「女性∧10代」という論理式がそれぞれ設定されている。ここでは、「∧」と「∨」は、それぞれ「AND」、「OR」の論理演算子である。
【0014】
例えば、広告コンテンツ50に設定された論理式は、クエリが広告コンテンツ50にヒットするためには、「性別(男性)」および「年齢層(20代∨30代)」という、少なくとも二つの属性情報が必要であることを示している。すなわち、広告コンテンツ50に設定された最小条件数は、「2」である。また、広告コンテンツ51に設定された論理式は、クエリが広告コンテンツ51にヒットするためには、「性別(女性)」もしくは「年齢層(20代)」という、少なくとも一つの属性情報が必要であることを示している。すなわち、広告コンテンツ51に設定された最小条件数は、「1」である。また、広告コンテンツ52に設定された論理式は、クエリが広告コンテンツ52にヒットするためには、「性別(女性)」および「年齢層(10代)」という、少なくとも二つの属性情報が必要であることを示している。すなわち、広告コンテンツ52に設定された最小条件数は、「2」である。
【0015】
図1に示した例では、ユーザU01は、「20代」および「男性」という二つの属性情報を含むクエリを、広告コンテンツを検索する装置側へ送信するものとする。上記のように、広告コンテンツ50、広告コンテンツ51および広告コンテンツ52に設定された最小条件数は、それぞれ「2」、「1」、「2」である。ユーザU01が送信したクエリに含まれる属性情報の数は「2」であるため、ユーザU01が送信したクエリは、広告コンテンツ50、広告コンテンツ51および広告コンテンツ52に設定された最小条件数の条件を満たす。ゆえに、ユーザU01が送信したクエリは、広告コンテンツ50、広告コンテンツ51、および広告コンテンツ52の全てにヒットする可能性がある。
【0016】
ここで、広告装置100は、ヒットする可能性のある広告コンテンツ50、51および52について、論理式の正確な評価を行う。広告コンテンツ50に設定された論理式は、「男性∧(20代∨30代)」である。ユーザU01から送信されたクエリのうち、「男性」は、広告コンテンツ50に設定された論理式の「男性」を満たす。また、ユーザU01からの送信されたクエリのうち、「20代」は、広告コンテンツ50に設定された論理式の「(20代∨30代)」を満たす。したがって、ユーザU01から送信されたクエリは、広告コンテンツ50にヒットする。
【0017】
また、広告コンテンツ51に設定された論理式は、「女性∨20代」である。ユーザU01から送信されたクエリのうち、「20代」は、広告コンテンツ51に設定された論理式の「女性∨20代」を満たす。したがって、ユーザU01から送信されたクエリは、広告コンテンツ51にヒットする。
【0018】
一方、広告コンテンツ52に設定された論理式は、「女性∧10代」である。ユーザU01から送信されたクエリのうち、「20代」は、広告コンテンツ51に設定された論理式「10代」を満たさない。また、ユーザU01から送信されたクエリのうち、「男性」は、広告コンテンツ51に設定された論理式「女性」を満たさない。したがって、ユーザU01から送信されたクエリは、広告コンテンツ52にヒットしない。
【0019】
続いて、ユーザU02の例について説明する。
図1に示した例では、ユーザU02は、「女性」という一つの属性情報を含むクエリを、広告コンテンツを検索する装置側へ送信するものとする。上記のように、広告コンテンツ50、広告コンテンツ51および広告コンテンツ52に設定された最小条件数は、それぞれ「2」、「1」、「2」である。ユーザU02が送信したクエリに含まれる属性情報の数は「1」であるため、ユーザU01が送信したクエリは、広告コンテンツ51に設定された最小条件数の条件を満たす。ゆえに、ユーザU02が送信したクエリは、広告コンテンツ51にヒットする可能性がある。
【0020】
一方、ユーザU02が送信したクエリに含まれる属性情報の数は「1」であるため、ユーザU02が送信したクエリは、広告コンテンツ50および広告コンテンツ52に設定された最小条件数の条件を満たさない。ゆえに、ユーザU02が送信したクエリは、広告コンテンツ50および広告コンテンツ52にヒットする可能性がない。
【0021】
ここで、ヒットする可能性のある広告コンテンツ51について、論理式の正確な評価を行う。広告コンテンツ51に設定された論理式は、「女性∨20代」である。ユーザU02から送信されたクエリのうち、「女性」は、広告コンテンツ51に設定された論理式の「女性」を満たす。したがって、ユーザU02から送信されたクエリは、広告コンテンツ51にヒットする。
【0022】
このように、論理式を用いる検索手法においては、最小条件数に基づいて、論理式の正確な評価を行うことなく、クエリにヒットする可能性がない広告コンテンツを検出することができる。
【0023】
次に、
図2を用いて、実施形態に係る転置インデックスおよびポスティングリストについて説明する。
図2は、実施形態に係る転置インデックスおよびポスティングリストの一例を示す図である。
【0024】
実施形態に係る広告装置100は、ドキュメントを識別する識別番号として、ドキュメント番号を使用する。このドキュメント番号は、ドキュメント番号の増加にともない最小条件数が増加するように、ドキュメントに予め付与される番号である。
【0025】
図2に示すように、リスト60では、ドキュメント番号に対応するドキュメントに、論理式がそれぞれ設定されている。具体的には、ドキュメント番号91、ドキュメント番号92およびドキュメント番号93に対応するドキュメントに、「30代∨男性」、「30代∧女性」、「(20代∧男性)∨(30代∧女性)」という論理式がそれぞれ設定されている。なお、以下では、「ドキュメント番号に対応するドキュメントに設定された最小条件数」を、単に、「ドキュメント番号に設定された最小条件数」と表記する場合がある。
【0026】
転置インデックスは、ドキュメントに含まれるキーワード(単語)とドキュメントの対応付けを行うデータ構造である。
図2に示した例では、転置インデックスは、ドキュメントに設定された論理式に含まれる属性情報から、ドキュメントを探し出すためのデータ構造である。
図2に示した例において、リスト60の転置インデックスは、転置インデックス70である。
図2に示すように、転置インデックス70には、リスト60の論理式に含まれる属性情報ごとに、ドキュメント番号が格納されている。
【0027】
転置インデックスは、ドキュメントに設定された論理式に含まれる属性情報が、どのドキュメントに設定された論理式に含まれるかを示したポスティングリストの集合からなる。
図2に示した例において、ポスティングリストは、転置インデックス70の一つの属性情報に対応するドキュメント番号のリストである。例えば、
図2の例では、「30代」のポスティングリストは、「91」、「92」、「93」である。なお、ポスティングリストの要素には、ドキュメント番号が昇順に並ぶものとする。
【0028】
〔1−1.従来技術における検索処理〕
次に、
図3を用いて、論理式が設定されたドキュメントを検索する従来技術について説明する。
図3は、従来技術の一例を説明するための図である。従来技術に係る検索手法(以下、「従来手法」と表記する)は、まず、クエリを受け付けた際に、検索対象となるドキュメントが含まれる所定の転置インデックスから、クエリに含まれるキーワードに対応するポスティングリストを参照する(ステップS101)。そして、従来手法は、
図1に示した例のように、ドキュメント番号の最小条件数に基づいて、クエリにヒットする可能性があるドキュメントに対応するドキュメント番号を抽出する。
【0029】
ここでは説明の便宜上、検索対象となるドキュメントに設定された最小条件数は全て「3」とし、受け付けたクエリに含まれるキーワードを、term1〜term7と表記する。また、検索対象となるドキュメントが含まれる所定の転置インデックスには、term1〜term7のポスティングリストが含まれるものとする。term1〜term7のポスティングリストは、
図3に示すように、各キーワードに対応するドキュメント番号をそれぞれ有する。なお、
図2に示した例のように、各ポスティングリストの要素には、ドキュメント番号が昇順に並ぶものとする。
【0030】
各ポスティングリストに格納されたドキュメント番号の数量が、かかるドキュメント番号に設定された最小条件数の条件を満たした場合、かかるドキュメント番号に対応するドキュメントは、クエリにヒットする可能性がある。例えば、
図3に示すように、ドキュメント番号5は、term2、term3およびterm7のポスティングリストにそれぞれ格納されている(ステップS104)。すなわち、ドキュメント番号5に設定された論理式には、term2、term3およびterm7のキーワードが含まれることを示している。ここで、ドキュメント番号5に設定された最小条件数は3であるため、term2、term3およびterm7の三つのキーワードが含まれるクエリは、ドキュメント番号5に対応するドキュメントにヒットする可能性がある。なお、以下では、「クエリがドキュメント番号に対応するドキュメントにヒットする」ことを、単に、「クエリがドキュメント番号にヒットする」と表記する場合がある。
【0031】
続いて、従来手法は、ポスティングリスト先頭のドキュメント番号が、ポスティングリストの集合の先頭から見て昇順になるように、ポスティングリストをソートする(ステップS102)。具体的には、従来手法は、
図3に示すように、ポスティングリスト先頭のドキュメント番号が最も小さいterm7のポスティングリストが一番上になるように、term1〜term7のポスティングリストをソート(整列)する。
【0032】
図3の例では、ドキュメント番号1は、term7のポスティングリスト先頭の要素にしか含まれない。このため、ドキュメント番号1の数量は、ドキュメント番号「1」に設定された最小条件数(ここでは、3)の数を満たさない。すなわち、ドキュメント番号1がクエリにヒットする可能性はない。
【0033】
また、
図3に示すように、ドキュメント番号2は、term3のポスティングリスト先頭の要素に含まれる。ここで、term7のポスティングリスト先頭の要素は、ドキュメント番号1である。このため、term7のポスティングリストには、先頭の要素以降に、ドキュメント番号2が含まれている可能性がある。しかし、term7のポスティングリストにおいて、先頭の要素以降に、ドキュメント番号2が含まれていた場合でも、ドキュメント番号2は2個しか揃わない。このため、ドキュメント番号2の数量は、ドキュメント番号2に設定された最小条件数の数を満たさない。すなわち、ドキュメント番号2がクエリにヒットする可能性はない。
【0034】
また、
図3に示すように、ドキュメント番号4は、term1のポスティングリスト先頭の要素に含まれる。ここで、term7およびterm3のポスティングリスト先頭の要素は、それぞれドキュメント番号1、ドキュメント番号2である。このため、term7およびterm3のポスティングリストには、先頭の要素以降に、ドキュメント番号4が含まれている可能性がある。term7およびterm3のポスティングリストにおいて、ポスティングリスト先頭の要素以降に、ドキュメント番号4が含まれていた場合、ドキュメント番号4の数量は、ドキュメント番号4に設定された最小条件数の数を満たす。すなわち、ドキュメント番号4は、ヒット候補のドキュメント番号である。
【0035】
続いて、従来手法は、先頭の要素以降にヒット候補のドキュメント番号が含まれている可能性があるポスティングリストにおいて、ポスティングリスト先頭の要素がヒット候補のドキュメント番号以上になるまで、参照するドキュメント番号を進める(ステップS103)。具体的には、従来手法は、term7およびterm3のポスティングリストにおいて、ポスティングリスト先頭の要素が、4以上のドキュメント番号になるまで、参照するドキュメント番号を進める。また、参照するドキュメント番号を進める処理の後に、ポスティングリスト先頭のドキュメント番号が、ポスティングリストの集合の先頭から見て昇順になるように、ポスティングリストをソートする。
【0036】
参照するドキュメント番号を進めた結果、ドキュメント番号4は、term1のポスティングリスト先頭の要素にしか含まれない。このため、ドキュメント番号4の数量は、ドキュメント番号4に設定された最小条件数の数を満たさない。すなわち、ドキュメント番号4がクエリにヒットする可能性はない。
【0037】
続いて、従来手法は、外れたヒット候補のドキュメント番号が格納されているポスティングリストにおいて、外れたヒット候補の次のドキュメント番号まで、参照するドキュメント番号を進める(ステップS104)。具体的には、従来手法は、term1のポスティングリストにおいて、ポスティングリスト先頭の要素が、4の次の番号になるように、参照するドキュメント番号を進める。また、参照するドキュメント番号を進める処理の後に、ポスティングリスト先頭のドキュメント番号が、ポスティングリストの集合の先頭から見て降順になるように、ポスティングリストをソートする。
【0038】
参照するドキュメント番号を進めた結果、ドキュメント番号5は、term2、term3およびterm7のポスティングリスト先頭の要素の中に含まれる。このため、ドキュメント番号5の数量は、ドキュメント番号5に設定された最小条件数の数を満たす。すなわち、ドキュメント番号5は、クエリにヒットする可能性がある。そして、従来手法は、ヒット候補のドキュメント番号の数量が、ヒット候補のドキュメント番号に設定された最小条件数の数を満たした場合、ヒット候補のドキュメント番号に対応するドキュメントに設定された論理式の正確な評価を行い、実際にクエリがドキュメントにヒットするかを判定する。
【0039】
ところで、従来手法は、例えば、ステップS103のように、ヒット候補のドキュメント番号が含まれている可能性がある全てのポスティングリストについて、ポスティングリスト先頭の要素がヒット候補のドキュメント番号以上になるまで、参照するドキュメント番号を進める。具体的には、ステップS103において、ヒット候補のドキュメント番号は、4である。また、参照するドキュメント番号を進めるポスティングリストは、term7およびterm3である。
【0040】
ここで、例えば、term7からterm3の順に、ポスティングリストにおいて参照するドキュメント番号を進める処理が、順次行われた場合、term7のポスティングリストにおいてドキュメント番号4が含まれていないことが判明した時点で、ドキュメント番号4の数量は、ドキュメント番号4に設定された最小条件数の数を満たさないことが確定する。
【0041】
すなわち、ドキュメント番号4がヒットしないことが確定した後に、term3のポスティングリストにおいて、ポスティングリスト先頭の要素が、4以上の番号になるまで、参照するドキュメント番号を進めることは、無駄な処理になる。このように、従来手法は、ヒット候補のドキュメント番号の数量が、かかるヒット候補のドキュメント番号に設定された最小条件数の数を満たさないことが確定した後に、無駄に参照するドキュメント番号を進める処理を実行する場合があり、検索効率が悪いという問題があった。
【0042】
〔1−2.本願に係る検索装置による検索処理〕
次に、
図4を用いて本願に係る検索装置に対応する広告装置100が実行する検索処理の一例について説明する。
図4は、実施形態に係る検索処理の一例を説明するための図である。実施形態に係る広告装置100は、まず、クエリを受け付けた際に、検索対象となるドキュメントが含まれる転置インデックスから、クエリに含まれるキーワードに対応するポスティングリストを参照する。また、検索対象となるドキュメントが含まれる転置インデックスは、例えば、広告情報記憶部121(
図6参照)に格納されている。そして、広告装置100は、
図1に示した例のように、ドキュメント番号に設定された最小条件数に基づいて、クエリにヒットする可能性があるドキュメントに対応するドキュメント番号を抽出する。
【0043】
ここでは、従来技術と比較した広告装置100の処理を説明するために、
図3と同様にして、検索対象となるドキュメントに設定された最小条件数は全て「3」とし、受け付けたクエリに含まれるキーワードを、term1〜term7と表記する。また、検索対象となるドキュメントが含まれる転置インデックスには、term1〜term7のポスティングリストが含まれるものとする。term1〜term7のポスティングリストは、
図4に示すように、各キーワードに対応したドキュメント番号をそれぞれ有する。なお、
図2に示した例のように、各ポスティングリストの要素には、ドキュメント番号が昇順に並ぶものとする。
【0044】
なお、以下の説明では、ドキュメント番号に設定された最小条件数がドキュメント番号ごとに異なる場合においても適用可能な、広告装置100による検索処理を説明する。
図4に示す例では、説明の便宜上、ドキュメント番号に設定された最小条件数の数は、ドキュメント番号によらず、全て「3」である。このため、以下の説明において、最小条件数の数は、ドキュメント番号によらず一定である。ところで、一般的には、ドキュメント番号に設定された最小条件数は、ドキュメント番号ごとに異なっていてもよい。以下で説明する広告装置100による検索処理は、ドキュメント番号ごとに設定された最小条件数が異なる場合においても適用可能な検索処理である。
【0045】
図4に示すように、広告装置100は、従来技術のように、ポスティングリストの集合をソートする処理を行う代わりに、連結リストおよび優先度付キューの二つのデータ構造を利用する。連結リストは、
図4に示すように、リストの上部に「head」と記載されているデータ構造である。また、優先度付キューは、リストの上部に「top」と記載されているデータ構造である。ここで、連結リストおよび優先度付キューの要素としては、各ポスティングリストに対応するドキュメント番号を格納する。
【0046】
広告装置100は、連結リスト先頭の要素から見てドキュメント番号が降順になるように、ドキュメント番号を連結リストの要素に格納する。また、広告装置100は、ドキュメント番号を、優先度付キューに一時的に格納する。広告装置100は、ドキュメント番号が小さいドキュメントから優先して、優先度付キューの要素から、ドキュメント番号を連結リストの要素に移動させるものとする。
図4に示す例では、説明の便宜上、優先度付キューの要素がドキュメント番号の配列から構成されている場合を示したが、優先度付キューの要素の具体的な構造は、
図4の例には限定されない。なお、広告装置100は、連結リストおよび優先度付キューにドキュメント番号を格納する場合には、格納されたドキュメント番号がどのポスティングリストに対応するか参照できるものとする。
【0047】
続いて、広告装置100は、
図4に示すterm1〜term7のポスティングリストにおいて、全てのポスティングリスト先頭のドキュメント番号を参照し、参照したポスティングリスト先頭のドキュメント番号を全て優先度付キューに格納する(ステップS201)。
【0048】
続いて、広告装置100は、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号の最小条件数の数になるまで、優先度付キューの要素から、ドキュメント番号を連結リストの要素に移動させる(ステップS202)。ここで、クエリにヒットする候補のドキュメント番号は、連結リスト先頭のドキュメント番号である。具体的には、連結リスト先頭の「4」が、ヒット候補のドキュメント番号である。
【0049】
続いて、広告装置100は、連結リスト先頭の要素から連結リスト末尾の要素に向かって、連結リストの要素に格納されているドキュメント番号を、順次参照する(ステップS203)。そして、広告装置100は、参照したドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号がヒット候補のドキュメント番号以上になるまで、参照するドキュメント番号を進める。具体的には、広告装置100は、まず、term3のポスティングリストに含まれるドキュメント番号「2」を参照する。そして、広告装置100は、term3のポスティングリストにおいて、参照するドキュメント番号を「2」から「5」に進める。
【0050】
ポスティングリストにおいて、参照するドキュメント番号がヒット候補のドキュメント番号を超えた場合、広告装置100は、ヒット候補のドキュメント番号を超えたドキュメント番号を、優先度付キューに格納する。具体的には、広告装置100は、ドキュメント番号5を、連結リストから優先度付キューに格納する。
【0051】
連結リストの要素数がヒット候補のドキュメント番号に設定された最小条件数を下回ることは、連結リストに含まれるヒット候補のドキュメント番号の数量が、ヒット候補のドキュメント番号に設定された最小条件数の数を満たさないことを示している。すなわち、ドキュメント番号4は、クエリにヒットする可能がない。
【0052】
広告装置100は、ヒット候補のドキュメント番号の数量が、ヒット候補のドキュメント番号に設定された最小条件数の数を満たさないことが判明した時点で、参照するドキュメント番号がかかるヒット候補のドキュメント番号以上になるまで、参照するドキュメント番号を進める処理をスキップする。具体的には、広告装置100は、term7のポスティングリストにおいて、参照するドキュメント番号を1から5に進める処理をスキップする。
【0053】
続いて、広告装置100は、次のヒット候補のドキュメント番号を、優先度付キューから連結リストに格納する(ステップS204)。広告装置100は、連結リストの要素数がヒット候補のドキュメント番号に設定された最小条件数を下回った場合、ステップS202と同様にして、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号の最小条件数の数になるまで、ドキュメント番号を、優先度付キューから連結リストに格納する。具体的には、広告装置100は、term2のポスティングリストに含まれるドキュメント番号5を、優先度付キューから連結リストに格納する。ここで、連結リストの先頭はドキュメント番号5であるため、ヒット候補のドキュメント番号は「5」である。
【0054】
広告装置100が次に優先度付キューから連結リストに格納するドキュメント番号が、連結リスト先頭のドキュメント番号と同じ場合、広告装置100は、かかるドキュメント番号を、連結リスト先頭の要素に追加する。具体的には、広告装置100は、term2のポスティングリストに含まれるドキュメント番号5を、優先度付キューから連結リストに格納した後に、term3のポスティングリストに含まれるドキュメント番号5を、優先度付キューから連結リストの要素に追加する。なお、以下では、「広告装置100が次に優先度付キューから連結リストに格納するドキュメント番号」を、「優先度付キュー先頭のドキュメント番号」と表記する場合がある。
【0055】
続いて、広告装置100は、ステップS203と同様にして、連結リスト先頭の要素から連結リスト末尾の要素に向かって、連結リストの要素に格納されているドキュメント番号を、順次参照する(ステップS205)。具体的には、広告装置100は、まず、term1のポスティングリストに含まれるドキュメント番号4を参照する。そして、広告装置100は、term1のポスティングリストにおいて、参照するドキュメント番号を「4」から「6」に進める。ここで、term1のポスティングリストにおいて、参照するドキュメント番号がヒット候補のドキュメント番号を超えたため、広告装置100は、ドキュメント番号6を、連結リストから優先度付キューに格納する。続いて、広告装置100は、term7のポスティングリストに含まれるドキュメント番号1を参照する。そして、広告装置100は、term7のポスティングリストにおいて、参照するドキュメント番号を「1」から「5」に進める。
【0056】
連結リストの要素に、ヒット候補のドキュメント番号の数量が、ヒット候補のドキュメント番号に設定された最小条件数の数を満たした場合、広告装置100は、ヒット候補のドキュメント番号に対応するドキュメントに設定された論理式の正確な評価を行い、実際にクエリがドキュメントにヒットするかを判定する(ステップS206)。具体的には、広告装置100は、最小条件数の条件を満たすドキュメント番号5に対応するドキュメントに設定された論理式の正確な評価を行う。
【0057】
広告装置100は、クエリがドキュメントにヒットするか否かの判定を行った後に、連結リストに格納されたドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号を、判定したドキュメント番号の次のドキュメント番号に進める。具体的には、広告装置100は、term3、term2およびterm7のポスティングリストにおいて、参照するドキュメント番号を、それぞれ「5」から「6」、「5」から「16」、「5」から「11」に進める。そして、広告装置100は、参照するドキュメント番号を、全て優先度付キューに格納する。具体的には、広告装置100は、ドキュメント番号6、ドキュメント番号16およびドキュメント番号11を、連結リストから優先度付キューに格納する。
【0058】
このように、実施形態に係る広告装置100は、連結リストおよび優先度付キューの二つのデータ構造に基づいてドキュメントを検索する。そして、ヒット候補のドキュメント番号が最小条件数の条件を満たさないことが判明した時点で、広告装置100は、次のヒット候補の検索処理に移行する。このため、
図3で説明した従来技術のように、無駄に参照するドキュメント番号を進める処理がなくなり、検索効率を向上させることができる。
【0059】
〔2.検索処理システムの構成〕
次に、
図5を用いて、実施形態に係る検索装置に対応する広告装置100が含まれる検索処理システム1の構成について説明する。
図5は、実施形態に係る検索処理システム1の構成例を示す図である。
図5に例示するように、実施形態に係る検索処理システム1には、ユーザ端末10と、広告主端末20と、ウェブサーバ30と、広告装置100とが含まれる。これらの各種装置は、ネットワークN(例えば、インターネット等の通信ネットワーク)を介して、有線又は無線により通信可能に接続される。なお、検索処理システム1を構成する各種装置の数は、
図5に例示したものに限られない。例えば、
図5に示した検索処理システム1には、複数台のユーザ端末10や、複数台の広告主端末20や、複数台のウェブサーバ30が含まれてもよい。
【0060】
ユーザ端末10は、例えば、デスクトップ型PC(Personal Computer)や、ノート型PCや、タブレット型端末や、携帯電話機、PDA(Personal Digital Assistant)等の情報処理装置である。例えば、ユーザ端末10は、ウェブサーバ30にアクセスすることで、ウェブサーバ30から提供されるウェブページを取得し、取得したウェブページを表示装置(例えば、液晶ディスプレイ)に表示する。そして、ユーザ端末10は、ウェブページ内の広告枠に表示される広告コンテンツ(例えば、広告装置100によって検索されたドキュメントに対応する広告コンテンツ)を配信させるため、広告コンテンツの配信要求であるクエリを広告装置100に送信する。
【0061】
広告主端末20は、広告装置100に広告配信を依頼する広告主によって利用される情報処理装置である。広告主端末20は、広告主による操作に従って、広告装置100に広告コンテンツを入稿する。また、広告主端末20は、適切な配信対象に広告コンテンツを配信させるために、広告コンテンツに対して論理式を用いた条件式を設定する。
【0062】
なお、広告主は、広告主端末20を用いて、広告装置100に広告コンテンツを入稿したりせずに、かかる入稿等を代理店に依頼する場合もある。この場合、広告装置100に広告コンテンツを入稿等するのは代理店となる。以下では、「広告主」といった表記は、広告主だけでなく代理店を含む概念であり、「広告主端末」といった表記は、広告主端末だけでなく代理店によって利用される代理店装置を含む概念であるものとする。
【0063】
ウェブサーバ30は、ユーザ端末10からアクセスされた場合に、広告装置100によって抽出された広告コンテンツが表示される広告面である各種ウェブページを提供するサーバ装置である。ウェブサーバ30は、例えば、ニュースサイト、天気予報サイト、ショッピングサイト、ファイナンス(株価)サイト、路線検索サイト、地図提供サイト、旅行サイト、飲食店紹介サイト、ウェブログなどに関する各種ウェブページを提供する。
【0064】
なお、上述のように、ウェブサーバ30によって配信されるウェブページには、広告コンテンツを表示するための広告枠が含まれる。そして、広告枠を含むウェブページには、広告枠に表示する広告コンテンツを取得するための広告取得命令が含まれる。例えば、ウェブページを形成するHTML(HyperText Markup Language)ファイル等には、広告装置100のURL等が広告取得命令として記述される。この場合、ユーザ端末10は、HTMLファイル等に記述されているURLにアクセスすることで、広告装置100から広告コンテンツの配信を受ける。
【0065】
広告装置100は、上述のように、広告配信の要求を行うユーザから送信されるクエリに基づいて、広告コンテンツを検索および抽出し、抽出された広告コンテンツをウェブサーバ30によって提供されるウェブサイトに配信するサーバ装置である。
【0066】
なお、広告装置100は、広告コンテンツの配信にあたって、ユーザ端末10を識別し、広告コンテンツを配信するユーザ端末10を特定する。具体的には、ユーザの識別は、ユーザ端末10のウェブブラウザと広告装置100との間でやり取りされるクッキーにユーザ識別情報を含めることによって行うことができる。ただし、ユーザを識別する手法は上記に限られない。例えば、ユーザ端末10に専用のプログラムを設定し、かかる専用プログラムからユーザ識別情報を広告装置100に送信させてもよい。
【0067】
〔3.広告装置の構成〕
次に、
図6を用いて、実施形態に係る広告装置100の構成について説明する。
図6は、実施形態に係る広告装置100の構成例を示す図である。
図6に示すように、広告装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、広告装置100は、広告装置100を利用する管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0068】
(通信部110について)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。かかる通信部110は、ネットワークNと有線又は無線で接続され、ネットワークNを介して、ユーザ端末10や、広告主端末20や、ウェブサーバ30との間で情報の送受信を行う。
【0069】
(記憶部120について)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
図6に示すように、記憶部120は、広告情報記憶部121と、ユーザ情報記憶部122とを有する。
【0070】
(広告情報記憶部121について)
広告情報記憶部121は、広告主端末20から入稿された広告コンテンツに関する情報である広告コンテンツ情報121Aを記憶する。また、広告情報記憶部121は、広告コンテンツ情報121Aに対応する転置インデックスである転置インデックス121Bを記憶する。
【0071】
ここで、
図7に、実施形態に係る広告情報記憶部121の一例を示す。
図7は、実施形態に係る広告情報記憶部121の一例を示す図である。
図7に示した例では、広告コンテンツ情報121Aは、「ドキュメント番号」、「最小条件数」、「論理式」といった項目を有する。また、転置インデックス121Bは、論理式に含まれる「属性情報」(例えば、年齢層、性別、趣味など)ごとに、属性情報を含むドキュメントに対応するドキュメント番号を昇順に配列したデータ構造である。
【0072】
なお、実際にユーザ端末10に配信される広告コンテンツのデータは、広告装置100とは別に備えられた所定の広告配信サーバに記憶されてもよい。この場合、広告装置100は、広告情報記憶部121に記憶されたドキュメント番号に基づいて、外部の広告配信サーバに記憶された広告コンテンツを特定する。そして、広告装置100は、広告配信サーバに対して、特定された広告コンテンツをユーザ端末10に対して配信するよう制御する。
【0073】
「ドキュメント番号」は、広告主から広告装置100に入稿された広告コンテンツを識別するための識別情報を示す。このドキュメント番号は、ドキュメント番号の増加にともない最小条件数が増加するように、広告コンテンツに予め付与される番号である。
【0074】
「最小条件数」は、クエリが広告コンテンツに設定された論理式にヒットするために、クエリに最低限含まれていなければならない属性情報の数である。広告コンテンツに設定された最小条件数は、広告コンテンツごとに設定された論理式によって決まる。例えば、ドキュメント番号「1」に対応する広告に設定された論理式は、「30代∧男性∧株」であるため、クエリがドキュメント番号1にヒットするには、「年齢層(30代)」、「性別(男性)」および「趣味(株)」の三つの属性情報が必要である。すなわち、ドキュメント番号1に設定された最小条件数は「3」である。
【0075】
「論理式」は、広告コンテンツごとに設定される論理式を示す。広告主は、広告コンテンツを入稿する際に論理式を設定する。これにより、広告主は、広告コンテンツを配信させるユーザを選択したり、特定の属性を有するユーザのみに広告コンテンツを配信させるよう配信対象を絞り込んだりすることができる。
【0076】
なお、転置インデックス121Bは、論理式に含まれる属性情報が、どの広告コンテンツに設定された論理式に含まれるかを示したポスティングリストの集合からなる。例えば、「20代」のポスティングリストは、ドキュメント番号3に対応する広告コンテンツに設定された論理式に、「20代」の属性情報が含まれることを示す。
【0077】
すなわち、
図7では、ドキュメント番号「1」によって識別される広告コンテンツは、ドキュメントに設定された最小条件数が「3」であり、設定されている論理式が「年齢層(30代)∧性別(男性)∧趣味(株)」であることを示している。
【0078】
(ユーザ情報記憶部122について)
ユーザ情報記憶部122は、ユーザに関する情報を記憶する。具体的には、ユーザ情報記憶部122は、広告装置100に広告コンテンツの配信を要求するユーザに関する属性情報を記憶する。
【0079】
ここで、
図8に、実施形態に係るユーザ情報記憶部122の一例を示す。
図8は、実施形態に係るユーザ情報記憶部122の一例を示す図である。
図8に示した例では、ユーザ情報記憶部122は、「ユーザID」、「属性情報」といった項目を有する。
【0080】
「ユーザID」は、ユーザ端末10、及びユーザ端末10を操作するユーザを識別する識別情報である。
図8において、ユーザIDは、「U11」と表記される。これは、ユーザ端末10がユーザID「U11」により識別されていることを示すとともに、ユーザ端末10は「ユーザU11」によって操作されていることを示すものとする。
【0081】
「属性情報」は、ユーザの属性情報を示す。ユーザの属性情報は、例えば、ユーザの性別や、年齢層や、趣味などに関する情報が含まれる。かかる属性情報は、クエリに含まれる単語として用いられる場合がある。
【0082】
すなわち、
図8では、ユーザID「U11」によって識別されるユーザ端末10は、属性情報が「20代」、「男性」、「東京」、「趣味:株」、「趣味:本」であることを示している。
【0083】
また、ユーザ情報記憶部122は、広告装置100の内部に存在せず、例えば外部に接続された所定のログ記憶サーバなどであってもよい。この場合、後述する配信要求受付部132は、ネットワークNを介して、所定のログ記憶サーバに記憶されているログを取得することができる。
【0084】
(制御部130について)
制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、広告装置100内部の記憶装置に記憶されている各種プログラム(検索プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0085】
図6に示すように、制御部130は、入稿受付部131と、配信要求受付部132と、検索部133と、配信部137とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図6に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130が有する各処理部の接続関係は、
図6に示した接続関係に限られず、他の接続関係であってもよい。
【0086】
(入稿受付部131について)
入稿受付部131は、広告主端末20から広告コンテンツの入稿を受け付ける。このとき、入稿受付部131は、広告コンテンツごとに設定される論理式を広告コンテンツと対応付けて受け付ける。そして、入稿受付部131は、入稿される広告コンテンツを識別するドキュメント番号を設定したうえで、入稿される広告コンテンツに関する情報を広告情報記憶部121に記憶する。また、入稿受付部131は、広告コンテンツに設定された論理式に含まれる属性情報が、どの広告コンテンツに設定された論理式に含まれるかを示したポスティングリストの集合である転置インデックスを作成し、作成した転置インデックスを広告情報記憶部121に記憶する。
【0087】
なお、入稿受付部131は、広告コンテンツに設定される論理式について、必ずしも広告コンテンツの入稿と同時に受け付けることを要しない。すなわち、入稿受付部131は、広告コンテンツの入稿の後に論理式の設定を受け付けてもよいし、論理式の設定を受け付けた後に、論理式の内容の変更を受け付けてもよい。
【0088】
(配信要求受付部132について)
配信要求受付部132は、広告コンテンツを検索するための条件を受け付ける。具体的には、配信要求受付部132は、広告コンテンツの配信を要求する送信元(ここでは、ユーザ端末10)から、広告コンテンツを検索するための条件となる送信元情報を受け付ける。例えば、配信要求受付部132は、送信元情報として、配信要求の送信元であるユーザに関する情報や、ユーザ端末10に保持される情報や、配信された広告コンテンツが表示されるウェブページに関する情報等を含む広告コンテンツの配信要求であるクエリをユーザ端末10から受け付ける。より具体的には、配信要求受付部132は、クエリとして、ユーザの属性情報などを受け付ける。
【0089】
配信要求受付部132は、受け付けた送信元情報をユーザ情報記憶部122に記憶する。また、配信要求受付部132は、広告コンテンツの抽出に要する全ての情報をクエリとしてユーザ端末10から受け付けるのでなく、予め記憶されていたユーザ情報をユーザ情報記憶部122から受け付けてもよい。なお、広告装置100は、広告コンテンツの配信要求を受け付けたものの、かかる配信要求から上記の送信元情報のようなクエリが受け付けられなかったり、受け付けたクエリが検索処理を行うのに十分でなかったりする場合には、下記で説明する検索処理を行わず、広告コンテンツを配信してもよい。この場合、広告装置100は、特定のユーザにターゲディングしていない、任意のユーザに配信可能な広告コンテンツを配信する。
【0090】
(検索部133について)
検索部133は、広告コンテンツに対して所定の検索処理を行う。具体的には、検索部133は、連結リストに格納されるドキュメント番号のうち最大のドキュメント番号に設定された最小条件数の数になるまで、各ポスティングリスト先頭のドキュメント番号を連結リストに抽出する。そして、検索部133は、連結リストに属するドキュメント番号のうち最大のドキュメント番号と、連結リストに含まれる他のドキュメント番号が一致した場合には、他のドキュメント番号を連結リストに保持する。一方、検索部133は、他のドキュメント番号が最大のドキュメント番号と一致しない場合には、他のドキュメント番号を、他のドキュメント番号の属するポスティングリスト内のいずれかのドキュメント番号と他のドキュメント番号とを置き換える。これにより、検索部133は、連結リストにおける所定のドキュメント番号の数量が、所定のドキュメント番号に設定された最小条件数を満たすような所定のドキュメント番号を検索する。検索部133は、取得部134と、抽出部135と、判定部136とを有し、上記処理を実行する。
【0091】
(取得部134について)
取得部134は、広告コンテンツごとに付与されるドキュメント番号であって、条件を含む広告コンテンツに対応するドキュメント番号を昇順に配列したリストであるポスティングリストを、条件ごとに取得する。具体的には、取得部134は、広告情報記憶部121に記憶された転置インデックス121Bを参照し、ユーザ端末10から受け付けた条件であって、広告コンテンツを検索するための条件に対応するポスティングリストを取得する。例えば、取得部134は、転置インデックス121Bから、クエリに含まれるユーザの属性情報に対応するポスティングリストを取得する。
【0092】
(抽出部135について)
抽出部135は、取得部134によって取得された各ポスティングリストに基づき、ドキュメント番号の数量がドキュメント番号に設定された最小条件数を満たすようなドキュメント番号を抽出する。具体的には、抽出部135は、連結リストおよび優先度付キューの二つのデータ構造を利用することによって、ドキュメント番号を抽出する。連結リストおよび優先度付キューは、抽出部135が、ポスティングリストにおいて参照するドキュメント番号を記憶するためのデータ構造である。抽出部135は、連結リストおよび優先度付キューに関するデータを記憶部120に一時的に記憶することによって、連結リストおよび優先度付キューに格納されたドキュメント番号と、格納されたドキュメント番号に対応するポスティングリストを参照できるものとする。
【0093】
抽出部135は、連結リスト先頭の要素から見てドキュメント番号が降順になるように、ドキュメント番号を連結リストの要素に格納する。また、広告装置100は、ドキュメント番号を、優先度付キューに一時的に格納する。かかる抽出部135は、ドキュメント番号が小さいドキュメントから優先して、優先度付キューの要素から、ドキュメント番号を連結リストの要素に移動させる。
【0094】
図4に示した実施形態に係る広告装置100による検索処理のように、抽出部135は、以下に説明する、「処理1」、「処理2」および「処理3」を組み合わせて、最小条件数の条件を満たした広告コンテンツに対応するドキュメント番号を抽出する抽出処理を実現又は実行する。
【0095】
「処理1」は、抽出処理において、優先度付キューを初期化するものである。当該処理は、取得部134が取得したポスティングリストの集合において、全てのポスティングリスト先頭のドキュメント番号を参照し、参照したポスティングリスト先頭のドキュメント番号を全て優先度付キューに格納するものである。
【0096】
「処理2」は、抽出処理において、クエリにヒットする候補のドキュメント番号を選択するものである。当該処理は、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号に設定された最小条件数の数になるまで、優先度付キューの要素から、ドキュメント番号を連結リストの要素に移動させるものである。また、当該処理は、優先度付キュー先頭のドキュメント番号が、連結リスト先頭のドキュメント番号と同じ場合、抽出部135は、優先度付キュー先頭のドキュメント番号を、連結リスト先頭の要素に追加するものである。
【0097】
「処理3」は、抽出処理において、ポスティングリストにおいて参照するドキュメント番号を進めるものである。当該処理は、連結リスト先頭の要素から連結リスト末尾の要素に向かって、連結リストの要素に格納されているドキュメント番号を、順次参照するものである。そして、当該処理は、参照したドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号がヒット候補のドキュメント番号以上になるまで、参照するドキュメント番号を進めるものである。また、ポスティングリストにおいて、参照するドキュメント番号がヒット候補のドキュメント番号を超えた場合、当該処理は、ヒット候補のドキュメント番号を超えたドキュメント番号を、優先度付キューに格納するものである。また、当該処理は、連結リストの要素数がヒット候補のドキュメント番号に設定された最小条件数を下回った場合、処理2に戻るものである。
【0098】
(判定部136について)
判定部136は、抽出部135によって抽出されたドキュメント番号に対応する広告コンテンツが、クエリにヒットするか否かを判定する判定処理を行う。具体的には、判定部136は、抽出された広告コンテンツに設定された論理式の正確な評価を行い、実際にクエリが広告コンテンツにヒットするかを判定し、クエリにヒットすると判定された広告コンテンツを抽出する。また、判定部136は、クエリが広告コンテンツにヒットするか否かの判定を行った後に、連結リストに格納されたドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号が判定したドキュメント番号の次の番号になるように、参照するドキュメント番号を進める。そして、判定部136は、参照するドキュメント番号を、全て優先度付キューに格納する。
【0099】
(配信部137について)
配信部137は、広告コンテンツを検索するための条件を送信した送信元に対して、検索部133によって検索された所定のドキュメント番号に対応する広告コンテンツを配信する。具体的には、配信部137は、配信要求受付部132によって取得された広告コンテンツの配信要求であるクエリを送信したユーザ端末10に、判定部136によって抽出された広告コンテンツを配信する。
【0100】
なお、実際にユーザ端末10に配信される広告コンテンツのデータ自体は、広告装置100に係る記憶部120内に記憶されていなくてもよい。例えば、配信部137は、外部に備えられた所定の広告配信サーバに広告配信の制御命令を送信することで、判定部136が抽出した広告コンテンツをユーザ端末10に配信させてもよい。
【0101】
〔4.検索処理手順〕
次に、
図9を用いて、実施形態に係る広告装置100による検索処理の手順について説明する。
図9は、実施形態に係る広告装置100による検索処理手順を示すフローチャートである。
【0102】
図9に示すように、配信要求受付部132は、ユーザ端末10から広告コンテンツの配信要求を受け付ける(ステップS301)。そして、配信要求受付部132は、配信要求とともに、ユーザの属性情報が含まれるクエリを取得したか否かを判定する(ステップS302)。ここで、クエリを受け付けた場合には(ステップS302;Yes)、配信要求受付部132は、受け付けたクエリを検索部133に送り、広告コンテンツの検索処理を開始させる。そして、検索部133は、配信候補の広告コンテンツを検索する(ステップS303)。
【0103】
配信部137は、検索部133によって配信候補の広告コンテンツが少なくとも一つ以上抽出された場合には(ステップS304;Yes)、抽出された配信候補の広告コンテンツの中から所定の広告コンテンツを選択し、選択した所定の広告コンテンツを、クエリを送信したユーザ端末10に配信する(ステップS305)。
【0104】
一方、ステップS302において、ユーザの属性情報が含まれるクエリを受け付けない場合には(ステップS302;No)、配信部137は、特定のユーザにターゲティングされないような、任意のユーザに配信可能な広告コンテンツを配信する(ステップS306)。なお、クエリが受け付けられない場合とは、クエリに係る情報の全てが受け付けられない場合のみならず、送信元情報の一部が受け付けられたものの、他の情報が不足することにより、実施形態に係る処理が実現されない場合等を含む。
【0105】
また、ステップS304において、検索部133によって配信候補の広告コンテンツが抽出されなかった場合には(ステップS304;No)、配信部137は、特定のユーザにターゲティングされないような、任意のユーザに配信可能な広告コンテンツを配信する(ステップS306)。以上により、広告装置100による検索処理は完了する。
【0106】
次に、
図9のステップS303に示した、配信候補の広告コンテンツを検索する処理の処理手順について説明する。この配信候補の広告コンテンツを検索する処理は、検索部133がクエリにヒットする広告コンテンツを検索する処理である。
図10は、配信候補の広告コンテンツを検索する処理の処理手順を示すフローチャートである。
【0107】
図10に示すように、取得部134は、広告情報記憶部121に記憶された広告コンテンツに関する情報から、クエリに含まれる属性情報に該当するポスティングリストの集合を取得する(ステップS401)。続いて、抽出部135は、取得部134によって取得されたポスティングリストに基づいて、優先度付キューを初期化する(ステップS402)。
【0108】
図11は、
図10のステップS402に示した優先度付キューを初期化する処理の処理手順を示すフローチャートである。抽出部135は、取得部134によって取得されたポスティングリストの集合において、全てのポスティングリスト先頭のドキュメント番号を参照する(ステップS501)。続いて、抽出部135は、参照したポスティングリスト先頭のドキュメント番号を全て優先度付キューに格納する(ステップS502)。
【0109】
図10の説明に戻ると、抽出部135は、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号に設定された最小条件数の数揃わない場合には(ステップS403;No)、抽出部135は、広告コンテンツの検索を終了する(ステップS404)。そして、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号に設定された最小条件数の数揃う場合には(ステップS403;Yes)、抽出部135は、ヒット候補のドキュメント番号を選択する(ステップS405)。
【0110】
図12は、
図10のステップS405に示したヒット候補のドキュメント番号を選択する処理の処理手順を示すフローチャートである。抽出部135は、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号に設定された最小条件数の数になるまで、優先度付キューの要素から、ドキュメント番号を連結リストの要素に移動させる(ステップS601)。ここで、ヒット候補のドキュメント番号は、連結リスト先頭の要素のドキュメント番号である。
【0111】
続いて、抽出部135は、優先度付キュー先頭のドキュメント番号が、連結リスト先頭のドキュメント番号と同じでない場合には(ステップS602;No)、ヒット候補のドキュメント番号を選択する処理を終了する。一方、ステップS602において、優先度付キュー先頭のドキュメント番号が、連結リスト先頭のドキュメント番号と同じ場合には(ステップS602;Yes)、抽出部135は、優先度付キュー先頭のドキュメント番号を、連結リスト先頭の要素に追加する(ステップS603)。
【0112】
図10の説明に戻ると、抽出部135は、ステップS406において、ヒット候補のドキュメント番号が、取得部134によって取得された全ポスティングリストにおける終端の要素に含まれる場合には(ステップS406;Yes)、抽出部135は、広告コンテンツの検索を終了する(ステップS404)。そして、ヒット候補のドキュメント番号が取得部134によって取得された全ポスティングリストにおける終端の要素に含まれない場合には(ステップS406;No)、抽出部135は、連結リストにおいて、連結リスト先頭の要素から連結リスト末尾の要素に向かって、参照するドキュメント番号を一つ下に進める(ステップS407)。そして、抽出部135は、参照したドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号がヒット候補のドキュメント番号以上になるまで、参照するドキュメント番号を進める。
【0113】
ステップS407の処理において、ポスティングリストにおいて参照するドキュメント番号がヒット候補のドキュメント番号を超えた場合には(ステップS408;Yes)、抽出部135は、ヒット候補のドキュメント番号を超えたドキュメント番号を、優先度付キューに格納する(ステップS409)。
【0114】
ところで、ステップS409の処理を行った結果、連結リストの要素数がヒット候補のドキュメント番号に設定された最小条件数の数を下回った場合には(ステップS410;Yes)、ステップS403に移行する。そして、ステップS409の処理を行った結果、連結リストの要素数がヒット候補のドキュメント番号に設定された最小条件数の数を下回っていない場合には(ステップS410;No)、ステップS407に移行する。一方、ステップS407の処理において、ポスティングリストにおいて参照するドキュメント番号がヒット候補のドキュメント番号を超えなかった場合には(ステップS408;No)、ステップS411に移行する。
【0115】
ステップS411において、連結リストの要素に、ヒット候補のドキュメント番号が、ヒット候補のドキュメント番号に設定された最小条件数の数揃った場合には(ステップS411;Yes)、判定部136は、クエリが、抽出部135によって抽出されたドキュメント番号に対応する広告コンテンツにヒットするか否かを判定する(ステップS412)。そして、ステップS411において、連結リストの要素に、ヒット候補のドキュメント番号が、ヒット候補のドキュメント番号に設定された最小条件数の数揃わなかった場合には(ステップS411;No)、ステップS407に移行する。
【0116】
判定部136が判定を行った結果、クエリが、抽出部135によって抽出されたドキュメント番号に対応する広告コンテンツにヒットする場合には(ステップS413;Yes)、判定部136は、抽出された広告コンテンツを、配信候補の広告コンテンツとして抽出する(ステップS414)。続いて、判定部136は、連結リストに格納されたドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号が判定したドキュメント番号の次の番号になるように参照するドキュメント番号を進め、参照するドキュメント番号を、全て優先度付キューに格納する(ステップS415)。そして、検索部133は、ステップS403に移行し、引き続き検索処理を行う。一方、ステップS413において、クエリが、抽出部135によって抽出されたドキュメント番号に対応する広告コンテンツにヒットしなかった場合には(ステップS413;No)、ステップS415に移行する。
【0117】
〔5.変形例〕
上述した実施形態は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、その他の実施形態について説明する。
【0118】
〔5−1.初期化処理〕
上記実施形態では、
図4のステップS202において説明したように、広告装置100が、参照したポスティングリスト先頭のドキュメント番号を全て優先度付キューに格納する例を示した。しかし、広告装置100は、ポスティングリスト先頭のドキュメント番号が、ポスティングリストの集合の先頭から見て昇順になるように、ポスティングリストをソートした後に、連結リストの要素数が、連結リスト先頭の要素に格納されるドキュメント番号に設定された最小条件数の数になるまで、ポスティングリスト先頭のドキュメント番号を連結リストに格納してもよい。これにより、広告装置100は、
図4のステップS202における優先度付キューを初期化する処理を行うことなく、検索処理を開始することができる。
【0119】
〔5−2.連結リスト〕
上記実施形態では、
図4において説明したように、広告装置100が、連結リスト先頭の要素から見てドキュメント番号が降順になるように、ドキュメント番号を連結リストの要素に格納する例を示した。ここで、広告装置100は、連結リスト先頭のドキュメント番号が連結リストに属するドキュメント番号のうち最大のドキュメント番号になるようにドキュメント番号を連結リストの要素に格納するだけでもよい。例えば、
図4のステップS203において、広告装置100は、先に、term7のポスティングリストに含まれるドキュメント番号「1」を参照し、term7のポスティングリストにおいて、参照するドキュメント番号を「1」から「5」に進めてもよい。これにより、広告装置100は、連結リスト先頭の要素から連結リスト末尾の要素に向かって、連結リストの要素に格納されているドキュメント番号を参照する際に、ドキュメント番号の降順に限られない順で、ドキュメント番号を参照することができる。
【0120】
ところで、term7のポスティングリストにおいて、参照するドキュメント番号を「1」から「5」に進めた場合と、term3のポスティングリストにおいて、参照するドキュメント番号を「2」から「5」に進めた場合とを比較すると、先に、参照するドキュメント番号を「2」から「5」に進めることで、検索処理を高速化できる。具体的に説明すると、term3のポスティングリストにおいて、ドキュメント番号「2」以降の要素にドキュメント番号「5」が含まれる確率は、term7のポスティングリストにおいて、ドキュメント番号「1」以降の要素にドキュメント番号にドキュメント番号「5」が含まれる確率よりも低い。したがって、広告装置100による検索処理は、連結リスト先頭の要素から見てドキュメント番号が降順になるように、ドキュメント番号を連結リストの要素に格納し、連結リスト先頭の要素から連結リスト末尾の要素に向かって、連結リストの要素に格納されているドキュメント番号を、順次参照するほうが、高速で実行される。
【0121】
〔5−3.超えたドキュメント番号を優先度付キューに戻す処理(1)〕
上記実施形態では、
図4において説明したように、広告装置100が、ヒット候補のドキュメント番号を超えたドキュメント番号を、優先度付キューに格納する例を示した。しかし、広告装置100は、ヒット候補のドキュメント番号を超えたドキュメント番号が、優先度付キュー先頭のドキュメント番号よりも小さい場合には、直接、かかるヒット候補のドキュメント番号を超えたドキュメント番号を連結リスト先頭の要素に格納してもよい。
【0122】
〔5−4.超えたドキュメント番号を優先度付キューに戻す処理(2)〕
上記実施形態では、
図4において説明したように、広告装置100は、クエリがドキュメントにヒットするか否かの判定を行った後に、連結リストに格納されたドキュメント番号が含まれるポスティングリストにおいて、参照するドキュメント番号を、判定したドキュメント番号の次のドキュメント番号に進める。そして、広告装置100は、参照するドキュメント番号を、全て優先度付キューに格納する。このとき、広告装置100は、連結リストの要素数が連結リスト先頭のドキュメント番号(次のヒット候補)に設定された最小条件数を下回るまで、連結リストに格納されたドキュメント番号を優先度付キューに移動させてもよい。
【0123】
〔5−5.最小条件数の設定〕
上記実施形態では、
図1において説明したように、ドキュメント側に設定された論理式に基づいて、最小条件数がドキュメントごとに設定される例を示した。しかし、クエリがドキュメントにヒットするための条件としての最小条件数は、クエリ側に条件として設定されてもよい。
【0124】
例えば、広告装置100が、「20代∨男性∨東京∨株、最小条件数=2」という条件を含むクエリを取得したものとする。この場合、「最小条件数=2」という条件は、かかるクエリが所定の広告コンテンツにヒットするためには、所定の広告コンテンツに「20代」、「男性」、「東京」および「株」という属性情報のうち少なくとも2つの属性情報が広告コンテンツに含まれる必要があることを示している。
【0125】
この例の場合、例えば、「20代」、「男性」および「女性」という属性情報が含まれる広告コンテンツはクエリに含まれる属性情報を2つ含むため、上記のクエリは、「20代」、「男性」および「女性」という属性情報が含まれる広告コンテンツにヒットする。しかし、例えば、「20代」、「女性」という属性情報のみが含まれる広告コンテンツはクエリに含まれる属性情報を1つしか含まないため、上記のクエリは、「20代」、「女性」という属性情報のみが含まれる広告コンテンツにはヒットしない。
【0126】
〔6.ハードウェア構成〕
また、上述してきた実施形態に係る広告装置100は、例えば
図13に示すような構成のコンピュータ1000によって実現される。
図13は、広告装置100の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM1300、HDD1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0127】
CPU1100は、ROM1300又はHDD1400に記憶されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を記憶する。
【0128】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を記憶する。通信インターフェイス1500は、通信網500(
図5に示したネットワークNに対応する)を介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータを、通信網500を介して他の機器へ送信する。
【0129】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、入出力インターフェイス1600を介して生成したデータを出力装置へ出力する。
【0130】
メディアインターフェイス1700は、記録媒体1800に記憶されたプログラム又はデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0131】
例えば、コンピュータ1000が実施形態に係る広告装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、HDD1400には、記憶部120内のデータが記憶される。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置から通信網500を介してこれらのプログラムを取得してもよい。
【0132】
〔7.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0133】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、
図6に示した入稿受付部131と、配信要求受付部132とは統合されてもよい。また、例えば、記憶部120に記憶される情報は、ネットワークNを介して、外部に備えられた記憶装置に記憶されてもよい。
【0134】
また、例えば、上記実施形態では、広告装置100が、広告コンテンツの入稿やクエリを受け付ける受付処理と、配信される広告コンテンツを検索する検索処理と、広告コンテンツを配信する配信処理とを行う例を示した。しかし、上述した広告装置100は、受付処理を行う受付装置と、検索処理を行う検索装置と、配信処理を行う配信装置とに分離されてもよい。この場合、受付装置は、少なくとも、入稿受付部131と、配信要求受付部132とを有する。また、検索装置は、少なくとも、検索部133を有する。また、配信装置は、少なくとも、配信部137を有する。
【0135】
また、上述してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0136】
〔8.効果〕
上述してきたように、実施形態に係る広告装置100は、配信要求受付部132と、検索部133と、取得部134とを有する。配信要求受付部132は、ドキュメントを検索するための条件を受け付ける。取得部134は、ドキュメントごとに付与されるドキュメント番号であって、条件を含むドキュメントに対応するドキュメント番号を昇順に配列したリストである第1リスト(例えば、ポスティングリスト)を、条件ごとに取得する。検索部133は、少なくともドキュメントが検索されるための条件として最小限必要となる条件の数である最小条件数を満たす数量のドキュメント番号であって、取得部によって取得された条件ごとの第1リストの各々の先頭のドキュメント番号を第2リストに抽出する。そして、検索部133は、第2リストに属するドキュメント番号のうち最大のドキュメント番号と、第2リストに含まれる他のドキュメント番号が一致した場合、他のドキュメント番号を第2リストに保持する。一方、検索部133は、他のドキュメント番号が最大のドキュメント番号と一致しない場合、他のドキュメント番号の属する第1リスト内のいずれかのドキュメント番号と他のドキュメント番号とを置き換える。これにより、検索部133は、第2リストにおける所定のドキュメント番号の数量が最小条件数を満たすような所定のドキュメント番号を検索する。
【0137】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たすようなドキュメントを効率的に検索することができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0138】
また、検索部133は、第1リストの各々の先頭のドキュメント番号を格納するキュー(例えば、優先度付キュー)から、第2リストに含まれるドキュメント番号の数量が最小条件数を少なくとも満たすように、当該キューに格納されているドキュメント番号を昇順に第2リストへと抽出し、当該抽出の後に、当該第2リストに属するドキュメント番号のうち最大のドキュメント番号と一致するドキュメント番号が当該キューに格納されている場合には、当該キューに格納されている当該最大のドキュメント番号を当該第2リストへとさらに抽出する。
【0139】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たすドキュメントの候補を効率的に検索することができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0140】
また、検索部133は、第2リストに属するドキュメント番号のうち最大のドキュメント番号と他のドキュメント番号が一致しない場合には、他のドキュメント番号の属する第1リストに含まれるドキュメント番号を整列順に検索し、最大のドキュメント番号と一致する番号のドキュメント番号が検索されない場合には、他のドキュメント番号の属する第1リストの先頭を、他のドキュメント番号の属する第1リスト内のドキュメント番号であって当該最大のドキュメント番号を超える最小のドキュメント番号に置き換えてキューへと返し、最大のドキュメント番号と一致するドキュメント番号が検索された場合には、第1リストに含まれるドキュメント番号であって、最大のドキュメント番号と一致するドキュメント番号を他のドキュメント番号と置き換えて、第2リストに保持する。
【0141】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たす可能性がないドキュメントの検索をスキップすることができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0142】
また、検索部133は、置き換えられた第1リストの先頭のドキュメント番号をキューへと返した後に、第2リストに含まれるドキュメント番号の数量が最小条件数を満たさない場合には、第2リストに含まれるドキュメント番号の数量が少なくとも最小条件数を満たすように、キューに格納されているドキュメント番号を昇順に第2リストへと抽出する。
【0143】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たす可能性がないドキュメントの検索をスキップした後に、迅速に、次の最小条件数の条件を満たすドキュメントの候補の検索に移行できるので、転置インデックスを利用して広告コンテンツを検索する場合の検索効率を向上させることができる。
【0144】
また、検索部133は、第2リストに属するドキュメント番号のうち最大のドキュメント番号と一致するドキュメント番号の数量が最小条件数を満たした場合には、最大のドキュメント番号を所定のドキュメント番号として抽出する。
【0145】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たすドキュメントの候補を効率的に検索することができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0146】
また、検索部133は、配信要求受付部132によって受け付けられた条件又は条件の組み合わせが、抽出した所定のドキュメント番号に対応するドキュメントに設定された条件式に適合するか否かを判定し、判定後、所定のドキュメント番号の属する各々の第1リストの先頭を、所定のドキュメント番号を超える最小のドキュメント番号に置き換えて、キューへと返す。
【0147】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たすドキュメントの候補を迅速に検索することができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0148】
また、検索部133は、判定後、所定のドキュメント番号以外のドキュメント番号が第2リストに含まれていた場合には、第2リストに含まれる所定のドキュメント番号以外のドキュメント番号の属する第1リストの先頭を、所定のドキュメント番号を超える最小のドキュメント番号に置き換えて、キューへと返す。
【0149】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たすドキュメントの候補を迅速に検索することができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0150】
また、検索部133は、第2リストに含まれるドキュメント番号の数量が、第2リストに属するドキュメント番号のうち最大のドキュメント番号に設定された最小条件数、又は、配信要求受付部132によって受け付けられた条件に設定された最小条件数を満たすように、キューからドキュメント番号を第2リストへ新たに抽出できない場合には、所定のドキュメント番号を検索する処理を終了する。
【0151】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たす可能性がないドキュメントの検索を終了することができるので、転置インデックスを利用してドキュメントを検索する場合の検索効率を向上させることができる。
【0152】
また、実施形態に係る広告装置100は、配信部137をさらに備える。検索部133は、所定のドキュメント番号に対応するドキュメントとして、検索されるための条件が設定された広告コンテンツを検索する。配信部137は、ドキュメントを検索するための条件を送信した送信元に対して、検索部133によって検索された所定のドキュメント番号に対応するドキュメントを配信する。
【0153】
これにより、実施形態に係る広告装置100は、最小条件数の条件を満たす広告コンテンツを効率的に検索することができるので、転置インデックスを利用して広告コンテンツを検索する場合の検索効率を向上させることができる。この結果、実施形態に係る広告装置100は、送信元に対して広告コンテンツを配信する際に、広告コンテンツを検索するための所要時間を削減することができる。
【0154】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0155】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。