検索システム及び方法
【課題】検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減し、高速な部分一致検索を実現すること。
【解決手段】検索システム(1)は、検索対象DB(101)から部分一致検索の対象となる文字列項目の内容(文字列)を重複を排除して抽出し、この抽出したユニークな文字列に対してユーザからの要求に基づく部分一致検索を実行する。そして、ユーザから受け付けた部分一致検索の条件式を、部分一致検索の結果得られた文字列項目の内容のみを検索するための完全一致検索の検索条件式に変換し、この変換後の検索条件式に基づいて、検索対象DB(101)に対する完全一致検索を実行する。
【解決手段】検索システム(1)は、検索対象DB(101)から部分一致検索の対象となる文字列項目の内容(文字列)を重複を排除して抽出し、この抽出したユニークな文字列に対してユーザからの要求に基づく部分一致検索を実行する。そして、ユーザから受け付けた部分一致検索の条件式を、部分一致検索の結果得られた文字列項目の内容のみを検索するための完全一致検索の検索条件式に変換し、この変換後の検索条件式に基づいて、検索対象DB(101)に対する完全一致検索を実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高速な部分一致検索を実現する検索システム及び方法に関する。
【背景技術】
【0002】
文字列を含むデータベース項目の検索において、完全一致検索と部分一致検索とを選択的に実行することができるが、単語の活用形、接頭語や接尾語と組み合わせた熟語、表記ゆれなども含めて検索することができる部分一致検索を実行する機会は非常に多い。
【0003】
部分一致検索では、完全一致検索に比べヒットする文字列が多数になることから、これまで、部分一致検索の精度を高めるための様々な試みが行われてきた。例えば、特許文献1には、クエリに偶然に一致する特異なオブジェクトの選択を防止し、最もふさわしいオブジェクトを確実に選択することが可能な部分一致検索方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−181934号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、データベース(リレーショナルデータベース)の検索では、検索対象である文字列項目の内容がデータベース内においてユニークでない場合が当然に起こり得る。
【0006】
一例として、出願人が提供するWeb上の検索サービスでは、ユーザが入力した検索クエリなどの様々な情報を検索ログ(データベース)として記憶しておき、この検索ログから、入力された回数の多い検索クエリのランキングを生成することが行われている(検索ランキング)。このような検索ランキングを生成するためには、検索ログから検索クエリ(文字列項目)の重複回数を取得する必要があり、同一の文字列(文字列項目の内容)に対応付けられたそれぞれのデータの出力が必要になる。
【0007】
一方で、データベース内の文字列項目の内容の重複は、検索対象が増えることから、検索処理負担の増大の一因となる。また、部分一致検索と完全一致検索とを比較すると、部分一致検索のほうが検索キーワードと検索対象との対比処理の回数が多く、部分一致検索は、完全一致検索に比べて検索の処理負担が大きくなるのが通常である。そのため、検索対象の文字列項目の内容がユニークでないデータベースを部分一致検索する場合には、多大な時間がかかってしまい、部分一致検索の高速化が求められている。
【0008】
本発明は、このような問題に鑑みてなされたものであり、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減し、高速な部分一致検索を実現する検索システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
(1) 部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、前記予備検索対象DBに記憶された前記文字列項目の内容について、所定の検索文字列を用いて部分一致検索を実行する予備検索実行手段と、前記予備検索実行手段による前記部分一致検索の結果得られた内容のみを検索するための完全一致検索の検索条件式を生成する検索条件変換手段と、前記検索条件変換手段により生成された前記検索条件式に基づいて、検索対象DBに記憶された検索対象に対する完全一致検索を実行する本検索実行手段と、を備える検索システム。
【0010】
(1)の検索システムによれば、予備検索対象DBに記憶された予備検索対象として意味をなす内容に対する部分一致検索を行った後、この検索結果に基づいて、ユニークでない内容を含む文字列項目に対する完全一致検索を行う。これにより、ユニークでない内容を含む文字列項目を含む膨大な検索対象DBに対しては、処理負担の小さい完全一致検索のみを実行すればよく、処理負担の大きい部分一致検索を実行する必要がない。その結果、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減することができ、高速な部分一致検索を実現することができる。
このとき、予備検索対象DBには、予備検索対象として意味をなす内容のみを記憶するため、無駄な文字列項目の内容について部分一致検索を行う必要がなく、部分一致検索の対象を最小限にとどめて部分一致検索の処理負担を軽減することができる。
【0011】
(2) 前記予備検索対象DBは、管理者により予め設定された内容を記憶する、(1)に記載の検索システム。
【0012】
(2)の検索システムによれば、検索対象DBに対する検索に必要十分な単語を予備検索対象DBに予め記憶しておくことで、検索対象DBに対して直接部分一致検索を実行した場合と同様の結果を得ることができる。
【0013】
(3) 前記検索対象DBに記憶された前記検索対象から、前記部分一致検索の対象となる前記文字列項目の内容を重複を排除して抽出し、前記予備検索対象DBに予備検索対象として記憶するユニーク文字列抽出手段、をさらに備える(1)に記載の検索システム。
【0014】
(3)の検索システムによれば、予備検索対象DBは、検索対象DBに記憶された文字列項目の内容(文字列)のうちの重複を排除したユニークな内容のみを記憶する。これにより、予備検索対象DBに対する部分一致検索によりヒットする検索結果は、検索対象DBに対する部分一致検索によりヒットする検索結果と同じであるため、(3)の検索システムによれば、検索対象DBを直接部分一致検索した場合と同一の検索結果を得ることができる。その結果、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減することができ、高速な部分一致検索を実現することができる。
【0015】
(4) 前記検索対象DB及び前記予備検索対象DBは、前記検索対象の文字列項目の内容及び前記予備検索対象の文字列項目の内容のうち前記検索対象の文字列項目の内容と同一の内容を同一の識別番号を付して記憶し、前記予備検索実行手段は、前記部分一致検索の結果として得られた文字列項目の内容に対応付けられた識別番号を出力し、前記本検索実行手段は、前記予備検索実行手段が出力した前記識別番号を用いて前記完全一致検索を実行する、(1)から(3)の何れかに記載の検索システム。
【0016】
(4)の検索システムによれば、予備検索対象DBに比べ大容量の検索対象DBに対して、文字列に対する検索ではなく、数値に対する検索を行うため、本検索(完全一致検索)の処理負担をより軽減することができる。
【0017】
(5) 前記部分一致検索を行う複数の予備検索サーバ、及び前記完全一致検索を実行する本検索サーバにより構成され、複数の前記予備検索サーバが、それぞれ重複が排除された前記文字列項目の内容を記憶する前記予備検索対象DBと、それぞれが備える前記予備検索対象DBを参照して、前記部分一致検索を実行する前記予備検索実行手段と、を備え、前記本検索サーバが、前記予備検索サーバによる前記部分一致検索の結果に基づく、前記完全一致検索を実行する前記本検索実行手段を備える、(1)から(4)の何れかに記載の検索システム。
【0018】
(5)の検索システムによれば、予備検索(部分一致検索)を複数の予備検索サーバで実行するため、予備検索の処理負担を軽減することができる。また、検索対象DBの容量が増加したとしても、予備検索サーバを増やすというハードウェアの追加といった簡易な方法のみで対応することができる。
【0019】
(6) 部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、を備えるコンピュータが実行する、前記予備検索対象DBに記憶された前記予備検索対象について、所定の検索文字列を用いて部分一致検索を実行するステップと、前記部分一致検索の結果得られた文字列項目の内容のみを検索するための完全一致検索の検索条件式を生成するステップと、生成された前記検索条件式に基づいて、前記検索対象DBに記憶された検索対象に対する完全一致検索を実行するステップと、を含む方法。
【0020】
(6)の方法によれば、(1)の検索システムと同様の効果を奏する。
【発明の効果】
【0021】
本発明によれば、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減し、高速な部分一致検索を実現することができる。
【図面の簡単な説明】
【0022】
【図1】第1実施形態の検索システムの機能構成を示すブロック図である。
【図2】上記実施形態の検索対象DBを示す図である。
【図3】上記実施形態の予備検索対象DBを示す図である。
【図4】上記実施形態の検索システムの動作を示す図である。
【図5】上記実施形態の検索システムの動作を示す図である。
【図6】上記実施形態の検索システムの処理の流れを示すフローチャートである。
【図7】上記実施形態の検索システムの処理の流れを示すフローチャートである。
【図8】上記実施形態の検索システムのシステム構成の一例を示す図である。
【図9】第2実施形態の検索システムの機能構成を示すブロック図である。
【図10】上記実施形態の予備検索対象DBを示す図である。
【図11】上記実施形態の検索システムの動作を示す図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態について図面を参照して説明する。
【0024】
[第1実施形態]
初めに、本発明の第1実施形態の検索システム1について、図1〜図8を参照して説明する。
【0025】
[検索システム1の構成]
図1を参照して、本発明の検索システム1の構成について説明する。
検索システム1は、ユニーク文字列抽出手段11と、部分一致検索受付手段12と、予備検索実行手段13と、検索条件変換手段14と、本検索実行手段15と、検索対象DB101と、予備検索対象DB102と、を含んで構成される。
【0026】
ユニーク文字列抽出手段11は、所定のタイミングで、検索対象の文字列項目の内容がユニークでない検索対象DB101から重複を排除して検索対象の文字列項目の内容を抽出し、すなわち、検索対象DB101に記憶される検索対象の文字列項目からユニークな内容(文字列)を抽出し、当該内容を予備検索対象DB102に記憶する。ここで、「所定のタイミング」は、任意のタイミングとすることができ、一例としては、検索対象DB101が更新されるたびに実行することとしてもよく、また、任意に定められた周期的に実行することとしてもよい。このとき、ユニーク文字列抽出手段11は、文字列項目の重複する内容の排除を検索対象DB101の更新(追加)に伴う差分についてのみ逐次実行していくことが好適である。
【0027】
検索対象DB101は、部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成されるレコードを複数記憶するデータベースである。ここで、本実施形態では検索対象DB101について、検索ログを例にとり説明する。なお、検索対象DB101は、検索ログに限られるものではなく、その内容がユニークでない文字列項目を含む可能性のあるデータベースであればよい。
図2を参照して、検索対象DB101(検索ログ)は、複数のレコード(レコード101A,101B,101Cなど)を記憶する。レコードは、複数の項目、すなわち、項目「検索クエリ」「bcookie」「datetime」などの様々な項目、を含み、その一部に文字列項目(例えば、「検索クエリ」や「bcookie」など)を含む。「検索クエリ」は、ユーザにより入力された検索キーワードを示し、「bcookie」は、検索を行ったユーザ(ユーザ端末)を識別するための情報を示し、「datetime」は、検索を行った日時を示す。以下においては、「検索クエリ」を検索対象の文字列項目として本実施形態について説明する。
ここで、詳しくは後述するが、検索対象DB101では、検索対象の文字列項目に対応付けて、当該文字列項目の内容を識別する識別情報を記憶しておくことが好ましい、図2を参照して、検索対象DB101は、検索対象の文字列項目「検索クエリ」に項目「クエリID」を対応付けて記憶している。なお、「クエリID」は、検索ログ生成時に「検索クエリ」に応じて自動的に付与される。
検索対象DB101(検索ログ)は、ユーザによる検索操作により適宜更新されるため、「検索クエリ」や「bcookie」などの任意の項目について重複が生じ得る。例えば、レコード101A,101Cは、項目「検索クエリ」の内容が「ソフトウェア」で同一(重複)であり、また、レコード101A,101B,101Dは、項目「bcookie」の内容が「54yyf5」で同一である。
【0028】
予備検索対象DB102は、検索対象DB101に含まれる検索対象の文字列項目の内容(文字列)のうち重複を排除したユニークな内容及び当該内容に対応付けられた識別情報を予備検索対象として記憶する。図2及び3を参照して、検索対象DB101では、レコード101A,101Cのように重複する内容「ソフトウェア」を記憶していたのに対し、予備検索対象DB102では、文字列項目の内容の重複が排除されている。
このように、第1実施形態の検索システム1では、検索対象DB101に含まれる検索対象の文字列項目の内容のうち重複を排除したユニークな内容が「予備検索対象として意味をなす内容」となる。
なお、Web上の検索サービスでは、ユーザのタイプミスなどにより意味をなさない語に基づく検索が行われる場合がある。このような場合、ユニーク文字列抽出手段11は、検索対象DB101に記憶されている意味をなさない語を予備検索対象DB102に抽出しないこととしてもよい。
【0029】
図1に戻り、部分一致検索受付手段12は、検索対象DB101に含まれる文字列項目に対するユーザからの部分一致検索要求、すなわち、所定の検索文字列を含む部分一致検索の指定を受け付ける。
【0030】
予備検索実行手段13は、ユーザから受け付けた所定の検索文字列を用いて、予備検索対象DB102に記憶された予備検索対象に対する部分一致検索(予備検索)を実行し、その検索結果を検索条件変換手段14に提供する。なお、予備検索実行手段13による検索結果は、部分一致検索によりヒットした文字列項目の内容(文字列)であってもよく、当該内容に対応付けられた識別情報(数字)であってもよい。
【0031】
検索条件変換手段14は、予備検索実行手段13から提供された検索結果に基づいて、検索対象DB101に対する完全一致検索の検索条件式を生成する。具体的には、検索条件変換手段14は、ユーザから受け付けた所定の検索文字列を含むという検索条件式(部分一致検索条件式)を、予備検索実行手段13による部分一致検索の結果得られた文字列項目の内容のみを検索するという検索条件式(完全一致検索条件式)に変換する。
ここで、完全一致検索条件式は、文字列項目の内容(文字列)を検索するための条件式であってもよいが、当該内容に対応付けられた識別情報(数字)を検索するための条件式である方が好適な場合がある。一般的に、文字列に対する検索より数字に対する検索の方が処理負担が少ないためであり、また、大容量の検索対象DB101に対する検索に適しているためである。
【0032】
本検索実行手段15は、検索条件変換手段14により生成された完全一致検索条件式に基づいて、検索対象DB101に対する完全一致検索を実行する。
【0033】
[検索システム1のハードウェア構成]
以上説明した検索システム1のハードウェアは、1又は複数の一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置(CPU)を備える他、記憶部として、メモリ(RAM、ROM)、ハードディスク(HDD)及び光ディスク(CD、DVDなど)を、ネットワーク通信装置として、各種有線及び無線LAN装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイなどの各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボールなど)を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、CPUは、検索システム1を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【0034】
[検索システム1の動作]
続いて、図4及び図5を参照して、検索システム1の動作について説明する。
【0035】
初めに、図4を参照して、検索対象DB101から予備検索対象DB102へのユニーク文字列の抽出について説明する。
ユニーク文字列抽出手段11は、所定のタイミングで、検索対象DB101にアクセスし、検索対象DB101に含まれる検索対象の文字列項目の内容を重複を排除して抽出し、抽出した内容を予備検索対象DB102に記憶する。
一例として、検索対象DB101には検索対象の項目「検索クエリ」の内容「ソフトウェア」が重複して記憶されているが、ユニーク文字列抽出手段11は、1つ目の「ソフトウェア」のみを予備検索対象DB102に記憶し、2つ目以降の「ソフトウェア」を予備検索対象DB102に記憶しない。
これにより、予備検索対象DB102には、検索対象DB101に記憶された検索対象の文字列項目の内容の全てが重複を排除した状態で記憶されることになる。このような予備検索対象DB102を用いることで、検索対象の文字列項目の内容がユニークでない検索対象DB101に対する部分一致検索の処理負担を軽減することができる。なお、文字列項目の内容の重複の排除には、文字列項目の内容を識別する情報(クエリID)を用いると好適な場合がある。
【0036】
続いて、図5を参照して、ユーザからの部分一致検索要求に基づいく部分一致検索について説明する。図5では、ユーザから項目「検索クエリ」について「ソフト」を含む文字列の部分一致検索要求がなされている。
【0037】
部分一致検索受付手段12が、ユーザからの部分一致検索要求を受け付けると、予備検索実行手段13は、項目「検索クエリ」の内容の重複を排除した予備検索対象DB102に対して、部分一致検索要求に基づく部分一致検索を行う。
図3に示す予備検索対象DB102を参照すると、項目「検索クエリ」のうち「ソフト」を含む内容(文字列)は、「ソフトウェア」「フリーソフト」「ソフトクリーム」「ソフト」「ソフトウェアー」「会計ソフト カスタマイズ セキュリティ」などであり、これらの「クエリID」は、「21」「23」「2」「3」「43」「11」などである。そのため、予備検索実行手段13は、検索結果として「クエリID:21、23、2、3、43、11・・・」を検索条件変換手段14に提供する。
【0038】
続いて、検索条件変換手段14は、部分一致検索受付手段12が受け付けた部分一致検索の検索条件式(項目「検索クエリ」について「ソフト」を含む文字列を検索する式)を、予備検索実行手段13による部分一致検索の検索結果のみを検索するという完全一致検索の検索条件式(「クエリID:21、23、2、3、43、11・・・」のみを検索する式)に変換する。
なお、検索システム1では、検索条件変換手段14が生成した完全一致の検索条件式について、ユーザからの変更操作を受け付けることとしてもよい。例えば、ユーザが「ソフト」を含む文字列の部分一致検索を望んだ場合、「ソフトウェア」や「会計ソフト」などに加え、「ソフトクリーム」なども検索結果としてヒットする。このとき、ユーザがソフトウェア関係の文字列の検索を望んでいた場合には、「ソフトクリーム」などのソフトウェアとは関係ない文字列について、検索対象DB101に対する完全一致検索を行う必要がない。そこで、検索システム1では、生成した完全一致の検索条件式をユーザに提示するとともに、ユーザから生成した検索条件式に対する変更操作を受け付け、この変更操作に基づいて検索条件式を変更することとしてもよい。なお、ユーザに対する提示及びユーザからの変更操作の受け付けは、「クエリID」で行うこととしてもよく「検索クエリ」で行うこととしてもよい。
【0039】
その後、本検索実行手段15は、この完全一致検索の検索条件式に基づいて、検索対象DB101に対して完全一致検索を実行し、その結果をユーザに対して返信する。
【0040】
ここで、予備検索対象DB102には、検索対象DB101に記憶された検索対象の文字列項目の内容のうち重複を排除した内容が記憶されているため、予備検索対象DB102に対する部分一致検索の結果得られた「クエリID」の種別は、検索対象DB101に対して直接部分一致検索した場合に得られる「クエリID」の種別と同一である。そのため、検索条件変換手段14により変換された検索条件式に基づく検索対象DB101に対する完全一致検索と、ユーザから受け付けた部分一致検索の検索条件式に基づく検索対象DB101に対する部分一致検索とでは同一の検索結果が得られる。
これにより、検索システム1では、ユニークでない文字列項目の内容を含む膨大な容量の検索対象DB101から部分一致検索の検索結果を得たい場合であっても、この検索対象DB101に対しては処理負担の小さい完全一致検索のみを実行すればよく、処理負担の大きい部分一致検索を実行する必要がない。その結果、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減することができ、高速な部分一致検索を実現することができる。
【0041】
特に、大規模なサービスを提供するインターネット事業者では、扱うデータ量が膨大になるため、本発明の検索システム1による部分一致検索の処理負担の軽減は顕著になる。例えば、Web上の検索サービスでは、1日あたりのユニーク検索クエリ数は約2000万種類であるが、これらの検索クエリの多くは、1日のうちに複数回入力され、1日に数万回以上入力される検索クエリも多数存在する。その結果、ユニーク検索クエリ数では約2000万種類しかないものの個々の検索クエリで膨大な量の重複が生じるため、検索サービス提供者が取得する検索ログは、1日あたり圧縮した状態で数ギガバイト以上にのぼる。
このように膨大な量の重複が生じている検索対象に対して部分一致検索を行ったのでは、膨大な時間がかかってしまうのに対して、本発明の検索システム1のように、初めに、ユニーク検索クエリに対してのみ部分一致検索を行っておき、その後、その検索結果に基づいて膨大な量の検索ログに対して完全一致検索を行うことで、処理負担を軽減することができ、高速な部分一致検索を実現することができる。
【0042】
[検索システム1の処理]
続いて、図6及びを図7参照して、検索システム1の処理について説明する。
【0043】
[ユニーク文字列抽出処理]
初めに、図6を参照して、検索システム1によるユニーク文字列抽出処理について説明する。
S1:ユニーク文字列抽出手段11は、検索対象DB101から文字列項目の内容を抽出するタイミングであるか否かを判定する。このとき、抽出するタイミングでない場合には、ユニーク文字列抽出手段11は、処理を終了する。
S2:他方、抽出するタイミングである場合には、ユニーク文字列抽出手段11は、検索対象DB101に含まれる項目のうち検索対象の文字列項目の内容を重複を排除して抽出し(ユニーク文字列を抽出し)、当該内容を予備検索対象DB102に記憶する。ここで、ユニーク文字列抽出手段11によるユニーク文字列の抽出は、前回抽出時の検索対象DB101と今回の検索対象DB101との更新(追加)に伴う差分についてのみ行うこととしてもよい。
【0044】
[部分一致検索実行処理]
続いて、図7を参照して、検索システム1による部分一致検索実行処理について説明する。
S11:初めに、部分一致検索受付手段12は、検索対象DB101に含まれる文字列項目に対するユーザからの部分一致検索要求、すなわち、所定の検索文字列を含む部分一致検索の指定を受け付ける。
S12:続いて、予備検索実行手段13は、図6のユニーク文字列抽出処理で生成された予備検索対象DB102に対して予備検索を実行する。すなわち、予備検索実行手段13は、予備検索対象DB102に対して、部分一致検索要求に基づく部分一致検索を実行する。予備検索実行手段13は、予備検索対象DB102に対する予備検索の実行結果を検索条件変換手段14に提供する。
【0045】
S13:検索条件変換手段14は、予備検索実行手段13から提供された検索結果に基づいて、検索対象DB101に対する完全一致検索の検索条件式を生成する。具体的には、検索条件変換手段14は、ユーザから受け付けた所定の検索文字列を含むという検索条件式(部分一致検索条件式)を、予備検索実行手段13による部分一致検索の結果得られた文字列項目の内容のみを検索するという検索条件式(完全一致検索条件式)に変換する。
S14:続いて、本検索実行手段15は、検索条件変換手段14により生成された完全一致検索条件式に基づいて、検索対象DB101に対する完全一致検索を実行し、その実行結果をユーザに対して提供し、処理を終了する。
【0046】
[検索システム1のシステム構成]
続いて、本発明の検索システム1の好適なシステム構成の一例について図8を参照して説明する。
検索システム1は、検索対象DBサーバ111と、本検索サーバ112と、複数の予備検索サーバ113と、を含んで構成される。
【0047】
検索対象DBサーバ111は、検索対象DB101を備え、この検索対象DB101から所定のタイミングでユニーク文字列を抽出して複数の予備検索サーバ113に振り分ける機能を有する。すなわち、検索対象DBサーバ111は、ユニーク文字列抽出手段11を備える。
本検索サーバ112は、ユーザから受け付けた部分一致検索要求に基づいて、複数の予備検索サーバ113に対して予備検索(部分一致検索)を実行させるとともに、その検索結果に基づいて完全一致検索の検索条件式を生成し、検索対象DB101に対する完全一致検索を実行し、その実行結果をユーザに対して提供する機能を有する。すなわち、本検索サーバ112は、部分一致検索受付手段12、検索条件変換手段14及び本検索実行手段15を備える。
また、複数の予備検索サーバ113は、予備検索対象DB102を備え、本検索サーバ112からの要求に応じて予備検索対象DB102に対する予備検索(部分一致検索)を実行し、その実行結果を本検索サーバ112に返信する機能を有する。すなわち、予備検索サーバ113は、予備検索実行手段13を備える。ここで、複数の予備検索サーバ113が備える予備検索対象DB102は、それぞれ重複が排除された文字列項目の内容を記憶する。すなわち、1の予備検索サーバ113の備える予備検索対象DB102に記憶された文字列と、他の予備検索サーバ113の備える予備検索対象DB102に記憶された文字列とは重複しない。
【0048】
このようなシステム構成によれば、予備検索(部分一致検索)を複数の予備検索サーバ113で実行するため、予備検索の処理負担を軽減することができる。また、検索対象DB101の容量が増加したとしても、予備検索サーバ113を増やすというハードウェアの追加といった簡易な方法のみで対応することができ、好適である。
【0049】
[第2実施形態]
次に、第2実施形態の検索システム2について、図9〜図11を参照して説明する。なお、第1実施形態の検索システム1では、検索対象DB101から重複を排除したユニークな内容(文字列)を抽出し予備検索対象DB102に記憶することで、部分一致検索(予備検索)の対象となる予備検索対象を生成していたのに対し、第2実施形態の検索システム2では、システムの管理者が予め設定した内容(文字列)を予備検索対象DB202に記憶しておくことで、予備検索対象を生成する点で異なる。
【0050】
[検索システム2の構成]
以下、第2実施形態の検索システム2の構成について説明する。なお、第1実施形態と同様の構成については、同一の符号を付し、その説明を省略する。
第2実施形態の検索システム2は、部分一致検索受付手段12と、予備検索実行手段13と、検索条件変換手段14と、本検索実行手段15と、検索対象DB101と、検索クエリ受付手段21と、予備検索対象DB202と、を含んで構成される。
【0051】
検索クエリ受付手段21は、ユーザにより入力された検索クエリを受け付け、受け付けた検索クエリを含む各種情報を検索対象DB101に記憶する。ここで、検索クエリ受付手段21は、受け付けた検索クエリにクエリIDを設定して検索対象DB101に記憶するが、クエリIDの設定については、図11で後述する。
【0052】
予備検索対象DB202は、図10に示すように文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する。このとき、予備検索対象DB202に記憶されるレコードは、文字列項目の内容が各々異なる。すなわち、予備検索対象DB202に記憶されるレコードの文字列項目の内容は、全てユニークな内容である。なお、第2実施形態の予備検索対象DB202は、文字列項目の内容として予備検索対象として意味をなす内容を記憶し、これらの内容は、検索システム2の管理者により予め設定される。具体的には、検索システム2の管理者は、予備検索対象として意味をなす内容を必要十分に抽出し、これらの各々に固有の識別情報(クエリID)を付して、予備検索対象DB202に記憶する。
【0053】
ここで、第2実施形態の検索システム2における「予備検索対象として意味をなす内容」は、予備検索対象の種別によって異なる。
例えば、予備検索対象が検索クエリのような文字データである場合には、語として意味をなす単語が「予備検索対象として意味をなす内容」となり、語として意味をなさない文字データが「予備検索対象として意味をなさない内容」となる。例えば、「ソフトクリーム」は語として意味をなす単語であり、「ソフトクリーメ」は語として意味をなさない文字データである。
また、予備検索対象がbcookieのように所定桁数の英数字である場合には、所定桁数の英数字が「予備検索対象として意味をなす内容」となり、所定桁数以外の英数字が「予備検索対象として意味をなさない内容」となる。例えば、予備検索対象が6桁の16進数で表記される文字列である場合には、5桁や7桁などの6桁以外の16進数の文字列は「予備検索対象として意味をなさない内容」となる。
【0054】
第2実施形態の検索システム2では、「予備検索対象として意味をなさない内容」については、予備検索対象DB202に記憶することなく、部分一致検索(予備検索)すら行わない。そのため、第2実施形態の検索システム2では、部分一致検索(予備検索)の対象を最小限にとどめることができ、部分一致検索(予備検索)の処理負担を軽減することができる。
【0055】
なお、上述のように予備検索実行手段13による部分一致検索(予備検索)の実行結果の出力や、その後の完全一致検索(本検索)の実行は、クエリIDに基づいて行うことが好ましい。この点、第2実施形態では、クエリIDの管理方法が第1実施形態と異なるため、図11を参照して、予備検索対象が検索クエリである場合を例にとって、クエリIDの管理方法について説明する。
【0056】
第2実施形態の検索システム2では、管理者により予め単語が用意され、これら単語を識別するクエリIDも管理者により予め設定される。そこで、検索クエリ受付手段21は、ユーザから検索クエリを受け付けると、予備検索対象DB202や図示しないクエリID対応テーブルから当該検索クエリに対応するクエリIDを取得し、検索クエリとクエリIDとを対応付けて検索対象DB101に記憶する。
具体的には、図11を参照して、ユーザから検索クエリとして「ソフト」と受け付けると、検索クエリ受付手段21は、予備検索対象DB202を参照し、単語「ソフト」に対応するクエリID「328」を取得する。そして、検索クエリ受付手段21は、取得したクエリID「328」を検索クエリ「ソフト」に付して、検索対象DB101に記憶する。
【0057】
これにより、第2実施形態の検索システム2においても、クエリIDに基づいて完全一致検索(本検索)を行うことができる。
なお、ユーザから受け付けた検索クエリに対応する単語が予備検索対象DB202に記憶されていない場合には、検索クエリ受付手段21は、当該検索クエリに対してクエリIDを付すことなく、検索対象DB101に記憶する。
【0058】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【0059】
すなわち、本実施形態では、検索ログに含まれる項目「検索クエリ」を検索対象の文字列項目として説明したが、本発明はこれに限られるものではなく、他の文字列項目についても適用可能である。
また、図8に示すシステム構成において、複数の予備検索サーバ113の備える予備検索対象DB102では、それぞれ重複しない文字列を記憶することとしているが、システムの安定性を考慮した文字列項目の重複を排除するものではない。また、図8に示すシステム構成は、第1実施形態の検索システム1だけでなく、第2実施形態の検索システム2についても適用可能である。
また、本実施形態の予備検索対象DB102,202は、重複しないユニークな文字列を記憶することとしているが、複数種類の文字列のうち極少数の文字列を重複させ予備検索対象DB102,202に記憶しても本発明の効果は十分に奏するものであり、本発明の適用を免れるものではない。
【符号の説明】
【0060】
1,2 検索システム
11 ユニーク文字列抽出手段
12 部分一致検索受付手段
13 予備検索実行手段
14 検索条件変換手段
15 本検索実行手段
101 検索対象DB
102,202 予備検索対象DB
21 検索クエリ受付手段
【技術分野】
【0001】
本発明は、高速な部分一致検索を実現する検索システム及び方法に関する。
【背景技術】
【0002】
文字列を含むデータベース項目の検索において、完全一致検索と部分一致検索とを選択的に実行することができるが、単語の活用形、接頭語や接尾語と組み合わせた熟語、表記ゆれなども含めて検索することができる部分一致検索を実行する機会は非常に多い。
【0003】
部分一致検索では、完全一致検索に比べヒットする文字列が多数になることから、これまで、部分一致検索の精度を高めるための様々な試みが行われてきた。例えば、特許文献1には、クエリに偶然に一致する特異なオブジェクトの選択を防止し、最もふさわしいオブジェクトを確実に選択することが可能な部分一致検索方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−181934号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、データベース(リレーショナルデータベース)の検索では、検索対象である文字列項目の内容がデータベース内においてユニークでない場合が当然に起こり得る。
【0006】
一例として、出願人が提供するWeb上の検索サービスでは、ユーザが入力した検索クエリなどの様々な情報を検索ログ(データベース)として記憶しておき、この検索ログから、入力された回数の多い検索クエリのランキングを生成することが行われている(検索ランキング)。このような検索ランキングを生成するためには、検索ログから検索クエリ(文字列項目)の重複回数を取得する必要があり、同一の文字列(文字列項目の内容)に対応付けられたそれぞれのデータの出力が必要になる。
【0007】
一方で、データベース内の文字列項目の内容の重複は、検索対象が増えることから、検索処理負担の増大の一因となる。また、部分一致検索と完全一致検索とを比較すると、部分一致検索のほうが検索キーワードと検索対象との対比処理の回数が多く、部分一致検索は、完全一致検索に比べて検索の処理負担が大きくなるのが通常である。そのため、検索対象の文字列項目の内容がユニークでないデータベースを部分一致検索する場合には、多大な時間がかかってしまい、部分一致検索の高速化が求められている。
【0008】
本発明は、このような問題に鑑みてなされたものであり、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減し、高速な部分一致検索を実現する検索システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
(1) 部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、前記予備検索対象DBに記憶された前記文字列項目の内容について、所定の検索文字列を用いて部分一致検索を実行する予備検索実行手段と、前記予備検索実行手段による前記部分一致検索の結果得られた内容のみを検索するための完全一致検索の検索条件式を生成する検索条件変換手段と、前記検索条件変換手段により生成された前記検索条件式に基づいて、検索対象DBに記憶された検索対象に対する完全一致検索を実行する本検索実行手段と、を備える検索システム。
【0010】
(1)の検索システムによれば、予備検索対象DBに記憶された予備検索対象として意味をなす内容に対する部分一致検索を行った後、この検索結果に基づいて、ユニークでない内容を含む文字列項目に対する完全一致検索を行う。これにより、ユニークでない内容を含む文字列項目を含む膨大な検索対象DBに対しては、処理負担の小さい完全一致検索のみを実行すればよく、処理負担の大きい部分一致検索を実行する必要がない。その結果、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減することができ、高速な部分一致検索を実現することができる。
このとき、予備検索対象DBには、予備検索対象として意味をなす内容のみを記憶するため、無駄な文字列項目の内容について部分一致検索を行う必要がなく、部分一致検索の対象を最小限にとどめて部分一致検索の処理負担を軽減することができる。
【0011】
(2) 前記予備検索対象DBは、管理者により予め設定された内容を記憶する、(1)に記載の検索システム。
【0012】
(2)の検索システムによれば、検索対象DBに対する検索に必要十分な単語を予備検索対象DBに予め記憶しておくことで、検索対象DBに対して直接部分一致検索を実行した場合と同様の結果を得ることができる。
【0013】
(3) 前記検索対象DBに記憶された前記検索対象から、前記部分一致検索の対象となる前記文字列項目の内容を重複を排除して抽出し、前記予備検索対象DBに予備検索対象として記憶するユニーク文字列抽出手段、をさらに備える(1)に記載の検索システム。
【0014】
(3)の検索システムによれば、予備検索対象DBは、検索対象DBに記憶された文字列項目の内容(文字列)のうちの重複を排除したユニークな内容のみを記憶する。これにより、予備検索対象DBに対する部分一致検索によりヒットする検索結果は、検索対象DBに対する部分一致検索によりヒットする検索結果と同じであるため、(3)の検索システムによれば、検索対象DBを直接部分一致検索した場合と同一の検索結果を得ることができる。その結果、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減することができ、高速な部分一致検索を実現することができる。
【0015】
(4) 前記検索対象DB及び前記予備検索対象DBは、前記検索対象の文字列項目の内容及び前記予備検索対象の文字列項目の内容のうち前記検索対象の文字列項目の内容と同一の内容を同一の識別番号を付して記憶し、前記予備検索実行手段は、前記部分一致検索の結果として得られた文字列項目の内容に対応付けられた識別番号を出力し、前記本検索実行手段は、前記予備検索実行手段が出力した前記識別番号を用いて前記完全一致検索を実行する、(1)から(3)の何れかに記載の検索システム。
【0016】
(4)の検索システムによれば、予備検索対象DBに比べ大容量の検索対象DBに対して、文字列に対する検索ではなく、数値に対する検索を行うため、本検索(完全一致検索)の処理負担をより軽減することができる。
【0017】
(5) 前記部分一致検索を行う複数の予備検索サーバ、及び前記完全一致検索を実行する本検索サーバにより構成され、複数の前記予備検索サーバが、それぞれ重複が排除された前記文字列項目の内容を記憶する前記予備検索対象DBと、それぞれが備える前記予備検索対象DBを参照して、前記部分一致検索を実行する前記予備検索実行手段と、を備え、前記本検索サーバが、前記予備検索サーバによる前記部分一致検索の結果に基づく、前記完全一致検索を実行する前記本検索実行手段を備える、(1)から(4)の何れかに記載の検索システム。
【0018】
(5)の検索システムによれば、予備検索(部分一致検索)を複数の予備検索サーバで実行するため、予備検索の処理負担を軽減することができる。また、検索対象DBの容量が増加したとしても、予備検索サーバを増やすというハードウェアの追加といった簡易な方法のみで対応することができる。
【0019】
(6) 部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、を備えるコンピュータが実行する、前記予備検索対象DBに記憶された前記予備検索対象について、所定の検索文字列を用いて部分一致検索を実行するステップと、前記部分一致検索の結果得られた文字列項目の内容のみを検索するための完全一致検索の検索条件式を生成するステップと、生成された前記検索条件式に基づいて、前記検索対象DBに記憶された検索対象に対する完全一致検索を実行するステップと、を含む方法。
【0020】
(6)の方法によれば、(1)の検索システムと同様の効果を奏する。
【発明の効果】
【0021】
本発明によれば、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減し、高速な部分一致検索を実現することができる。
【図面の簡単な説明】
【0022】
【図1】第1実施形態の検索システムの機能構成を示すブロック図である。
【図2】上記実施形態の検索対象DBを示す図である。
【図3】上記実施形態の予備検索対象DBを示す図である。
【図4】上記実施形態の検索システムの動作を示す図である。
【図5】上記実施形態の検索システムの動作を示す図である。
【図6】上記実施形態の検索システムの処理の流れを示すフローチャートである。
【図7】上記実施形態の検索システムの処理の流れを示すフローチャートである。
【図8】上記実施形態の検索システムのシステム構成の一例を示す図である。
【図9】第2実施形態の検索システムの機能構成を示すブロック図である。
【図10】上記実施形態の予備検索対象DBを示す図である。
【図11】上記実施形態の検索システムの動作を示す図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態について図面を参照して説明する。
【0024】
[第1実施形態]
初めに、本発明の第1実施形態の検索システム1について、図1〜図8を参照して説明する。
【0025】
[検索システム1の構成]
図1を参照して、本発明の検索システム1の構成について説明する。
検索システム1は、ユニーク文字列抽出手段11と、部分一致検索受付手段12と、予備検索実行手段13と、検索条件変換手段14と、本検索実行手段15と、検索対象DB101と、予備検索対象DB102と、を含んで構成される。
【0026】
ユニーク文字列抽出手段11は、所定のタイミングで、検索対象の文字列項目の内容がユニークでない検索対象DB101から重複を排除して検索対象の文字列項目の内容を抽出し、すなわち、検索対象DB101に記憶される検索対象の文字列項目からユニークな内容(文字列)を抽出し、当該内容を予備検索対象DB102に記憶する。ここで、「所定のタイミング」は、任意のタイミングとすることができ、一例としては、検索対象DB101が更新されるたびに実行することとしてもよく、また、任意に定められた周期的に実行することとしてもよい。このとき、ユニーク文字列抽出手段11は、文字列項目の重複する内容の排除を検索対象DB101の更新(追加)に伴う差分についてのみ逐次実行していくことが好適である。
【0027】
検索対象DB101は、部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成されるレコードを複数記憶するデータベースである。ここで、本実施形態では検索対象DB101について、検索ログを例にとり説明する。なお、検索対象DB101は、検索ログに限られるものではなく、その内容がユニークでない文字列項目を含む可能性のあるデータベースであればよい。
図2を参照して、検索対象DB101(検索ログ)は、複数のレコード(レコード101A,101B,101Cなど)を記憶する。レコードは、複数の項目、すなわち、項目「検索クエリ」「bcookie」「datetime」などの様々な項目、を含み、その一部に文字列項目(例えば、「検索クエリ」や「bcookie」など)を含む。「検索クエリ」は、ユーザにより入力された検索キーワードを示し、「bcookie」は、検索を行ったユーザ(ユーザ端末)を識別するための情報を示し、「datetime」は、検索を行った日時を示す。以下においては、「検索クエリ」を検索対象の文字列項目として本実施形態について説明する。
ここで、詳しくは後述するが、検索対象DB101では、検索対象の文字列項目に対応付けて、当該文字列項目の内容を識別する識別情報を記憶しておくことが好ましい、図2を参照して、検索対象DB101は、検索対象の文字列項目「検索クエリ」に項目「クエリID」を対応付けて記憶している。なお、「クエリID」は、検索ログ生成時に「検索クエリ」に応じて自動的に付与される。
検索対象DB101(検索ログ)は、ユーザによる検索操作により適宜更新されるため、「検索クエリ」や「bcookie」などの任意の項目について重複が生じ得る。例えば、レコード101A,101Cは、項目「検索クエリ」の内容が「ソフトウェア」で同一(重複)であり、また、レコード101A,101B,101Dは、項目「bcookie」の内容が「54yyf5」で同一である。
【0028】
予備検索対象DB102は、検索対象DB101に含まれる検索対象の文字列項目の内容(文字列)のうち重複を排除したユニークな内容及び当該内容に対応付けられた識別情報を予備検索対象として記憶する。図2及び3を参照して、検索対象DB101では、レコード101A,101Cのように重複する内容「ソフトウェア」を記憶していたのに対し、予備検索対象DB102では、文字列項目の内容の重複が排除されている。
このように、第1実施形態の検索システム1では、検索対象DB101に含まれる検索対象の文字列項目の内容のうち重複を排除したユニークな内容が「予備検索対象として意味をなす内容」となる。
なお、Web上の検索サービスでは、ユーザのタイプミスなどにより意味をなさない語に基づく検索が行われる場合がある。このような場合、ユニーク文字列抽出手段11は、検索対象DB101に記憶されている意味をなさない語を予備検索対象DB102に抽出しないこととしてもよい。
【0029】
図1に戻り、部分一致検索受付手段12は、検索対象DB101に含まれる文字列項目に対するユーザからの部分一致検索要求、すなわち、所定の検索文字列を含む部分一致検索の指定を受け付ける。
【0030】
予備検索実行手段13は、ユーザから受け付けた所定の検索文字列を用いて、予備検索対象DB102に記憶された予備検索対象に対する部分一致検索(予備検索)を実行し、その検索結果を検索条件変換手段14に提供する。なお、予備検索実行手段13による検索結果は、部分一致検索によりヒットした文字列項目の内容(文字列)であってもよく、当該内容に対応付けられた識別情報(数字)であってもよい。
【0031】
検索条件変換手段14は、予備検索実行手段13から提供された検索結果に基づいて、検索対象DB101に対する完全一致検索の検索条件式を生成する。具体的には、検索条件変換手段14は、ユーザから受け付けた所定の検索文字列を含むという検索条件式(部分一致検索条件式)を、予備検索実行手段13による部分一致検索の結果得られた文字列項目の内容のみを検索するという検索条件式(完全一致検索条件式)に変換する。
ここで、完全一致検索条件式は、文字列項目の内容(文字列)を検索するための条件式であってもよいが、当該内容に対応付けられた識別情報(数字)を検索するための条件式である方が好適な場合がある。一般的に、文字列に対する検索より数字に対する検索の方が処理負担が少ないためであり、また、大容量の検索対象DB101に対する検索に適しているためである。
【0032】
本検索実行手段15は、検索条件変換手段14により生成された完全一致検索条件式に基づいて、検索対象DB101に対する完全一致検索を実行する。
【0033】
[検索システム1のハードウェア構成]
以上説明した検索システム1のハードウェアは、1又は複数の一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置(CPU)を備える他、記憶部として、メモリ(RAM、ROM)、ハードディスク(HDD)及び光ディスク(CD、DVDなど)を、ネットワーク通信装置として、各種有線及び無線LAN装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイなどの各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボールなど)を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、CPUは、検索システム1を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【0034】
[検索システム1の動作]
続いて、図4及び図5を参照して、検索システム1の動作について説明する。
【0035】
初めに、図4を参照して、検索対象DB101から予備検索対象DB102へのユニーク文字列の抽出について説明する。
ユニーク文字列抽出手段11は、所定のタイミングで、検索対象DB101にアクセスし、検索対象DB101に含まれる検索対象の文字列項目の内容を重複を排除して抽出し、抽出した内容を予備検索対象DB102に記憶する。
一例として、検索対象DB101には検索対象の項目「検索クエリ」の内容「ソフトウェア」が重複して記憶されているが、ユニーク文字列抽出手段11は、1つ目の「ソフトウェア」のみを予備検索対象DB102に記憶し、2つ目以降の「ソフトウェア」を予備検索対象DB102に記憶しない。
これにより、予備検索対象DB102には、検索対象DB101に記憶された検索対象の文字列項目の内容の全てが重複を排除した状態で記憶されることになる。このような予備検索対象DB102を用いることで、検索対象の文字列項目の内容がユニークでない検索対象DB101に対する部分一致検索の処理負担を軽減することができる。なお、文字列項目の内容の重複の排除には、文字列項目の内容を識別する情報(クエリID)を用いると好適な場合がある。
【0036】
続いて、図5を参照して、ユーザからの部分一致検索要求に基づいく部分一致検索について説明する。図5では、ユーザから項目「検索クエリ」について「ソフト」を含む文字列の部分一致検索要求がなされている。
【0037】
部分一致検索受付手段12が、ユーザからの部分一致検索要求を受け付けると、予備検索実行手段13は、項目「検索クエリ」の内容の重複を排除した予備検索対象DB102に対して、部分一致検索要求に基づく部分一致検索を行う。
図3に示す予備検索対象DB102を参照すると、項目「検索クエリ」のうち「ソフト」を含む内容(文字列)は、「ソフトウェア」「フリーソフト」「ソフトクリーム」「ソフト」「ソフトウェアー」「会計ソフト カスタマイズ セキュリティ」などであり、これらの「クエリID」は、「21」「23」「2」「3」「43」「11」などである。そのため、予備検索実行手段13は、検索結果として「クエリID:21、23、2、3、43、11・・・」を検索条件変換手段14に提供する。
【0038】
続いて、検索条件変換手段14は、部分一致検索受付手段12が受け付けた部分一致検索の検索条件式(項目「検索クエリ」について「ソフト」を含む文字列を検索する式)を、予備検索実行手段13による部分一致検索の検索結果のみを検索するという完全一致検索の検索条件式(「クエリID:21、23、2、3、43、11・・・」のみを検索する式)に変換する。
なお、検索システム1では、検索条件変換手段14が生成した完全一致の検索条件式について、ユーザからの変更操作を受け付けることとしてもよい。例えば、ユーザが「ソフト」を含む文字列の部分一致検索を望んだ場合、「ソフトウェア」や「会計ソフト」などに加え、「ソフトクリーム」なども検索結果としてヒットする。このとき、ユーザがソフトウェア関係の文字列の検索を望んでいた場合には、「ソフトクリーム」などのソフトウェアとは関係ない文字列について、検索対象DB101に対する完全一致検索を行う必要がない。そこで、検索システム1では、生成した完全一致の検索条件式をユーザに提示するとともに、ユーザから生成した検索条件式に対する変更操作を受け付け、この変更操作に基づいて検索条件式を変更することとしてもよい。なお、ユーザに対する提示及びユーザからの変更操作の受け付けは、「クエリID」で行うこととしてもよく「検索クエリ」で行うこととしてもよい。
【0039】
その後、本検索実行手段15は、この完全一致検索の検索条件式に基づいて、検索対象DB101に対して完全一致検索を実行し、その結果をユーザに対して返信する。
【0040】
ここで、予備検索対象DB102には、検索対象DB101に記憶された検索対象の文字列項目の内容のうち重複を排除した内容が記憶されているため、予備検索対象DB102に対する部分一致検索の結果得られた「クエリID」の種別は、検索対象DB101に対して直接部分一致検索した場合に得られる「クエリID」の種別と同一である。そのため、検索条件変換手段14により変換された検索条件式に基づく検索対象DB101に対する完全一致検索と、ユーザから受け付けた部分一致検索の検索条件式に基づく検索対象DB101に対する部分一致検索とでは同一の検索結果が得られる。
これにより、検索システム1では、ユニークでない文字列項目の内容を含む膨大な容量の検索対象DB101から部分一致検索の検索結果を得たい場合であっても、この検索対象DB101に対しては処理負担の小さい完全一致検索のみを実行すればよく、処理負担の大きい部分一致検索を実行する必要がない。その結果、検索対象の文字列項目の内容がユニークでないデータベース内の部分一致検索の処理負担を軽減することができ、高速な部分一致検索を実現することができる。
【0041】
特に、大規模なサービスを提供するインターネット事業者では、扱うデータ量が膨大になるため、本発明の検索システム1による部分一致検索の処理負担の軽減は顕著になる。例えば、Web上の検索サービスでは、1日あたりのユニーク検索クエリ数は約2000万種類であるが、これらの検索クエリの多くは、1日のうちに複数回入力され、1日に数万回以上入力される検索クエリも多数存在する。その結果、ユニーク検索クエリ数では約2000万種類しかないものの個々の検索クエリで膨大な量の重複が生じるため、検索サービス提供者が取得する検索ログは、1日あたり圧縮した状態で数ギガバイト以上にのぼる。
このように膨大な量の重複が生じている検索対象に対して部分一致検索を行ったのでは、膨大な時間がかかってしまうのに対して、本発明の検索システム1のように、初めに、ユニーク検索クエリに対してのみ部分一致検索を行っておき、その後、その検索結果に基づいて膨大な量の検索ログに対して完全一致検索を行うことで、処理負担を軽減することができ、高速な部分一致検索を実現することができる。
【0042】
[検索システム1の処理]
続いて、図6及びを図7参照して、検索システム1の処理について説明する。
【0043】
[ユニーク文字列抽出処理]
初めに、図6を参照して、検索システム1によるユニーク文字列抽出処理について説明する。
S1:ユニーク文字列抽出手段11は、検索対象DB101から文字列項目の内容を抽出するタイミングであるか否かを判定する。このとき、抽出するタイミングでない場合には、ユニーク文字列抽出手段11は、処理を終了する。
S2:他方、抽出するタイミングである場合には、ユニーク文字列抽出手段11は、検索対象DB101に含まれる項目のうち検索対象の文字列項目の内容を重複を排除して抽出し(ユニーク文字列を抽出し)、当該内容を予備検索対象DB102に記憶する。ここで、ユニーク文字列抽出手段11によるユニーク文字列の抽出は、前回抽出時の検索対象DB101と今回の検索対象DB101との更新(追加)に伴う差分についてのみ行うこととしてもよい。
【0044】
[部分一致検索実行処理]
続いて、図7を参照して、検索システム1による部分一致検索実行処理について説明する。
S11:初めに、部分一致検索受付手段12は、検索対象DB101に含まれる文字列項目に対するユーザからの部分一致検索要求、すなわち、所定の検索文字列を含む部分一致検索の指定を受け付ける。
S12:続いて、予備検索実行手段13は、図6のユニーク文字列抽出処理で生成された予備検索対象DB102に対して予備検索を実行する。すなわち、予備検索実行手段13は、予備検索対象DB102に対して、部分一致検索要求に基づく部分一致検索を実行する。予備検索実行手段13は、予備検索対象DB102に対する予備検索の実行結果を検索条件変換手段14に提供する。
【0045】
S13:検索条件変換手段14は、予備検索実行手段13から提供された検索結果に基づいて、検索対象DB101に対する完全一致検索の検索条件式を生成する。具体的には、検索条件変換手段14は、ユーザから受け付けた所定の検索文字列を含むという検索条件式(部分一致検索条件式)を、予備検索実行手段13による部分一致検索の結果得られた文字列項目の内容のみを検索するという検索条件式(完全一致検索条件式)に変換する。
S14:続いて、本検索実行手段15は、検索条件変換手段14により生成された完全一致検索条件式に基づいて、検索対象DB101に対する完全一致検索を実行し、その実行結果をユーザに対して提供し、処理を終了する。
【0046】
[検索システム1のシステム構成]
続いて、本発明の検索システム1の好適なシステム構成の一例について図8を参照して説明する。
検索システム1は、検索対象DBサーバ111と、本検索サーバ112と、複数の予備検索サーバ113と、を含んで構成される。
【0047】
検索対象DBサーバ111は、検索対象DB101を備え、この検索対象DB101から所定のタイミングでユニーク文字列を抽出して複数の予備検索サーバ113に振り分ける機能を有する。すなわち、検索対象DBサーバ111は、ユニーク文字列抽出手段11を備える。
本検索サーバ112は、ユーザから受け付けた部分一致検索要求に基づいて、複数の予備検索サーバ113に対して予備検索(部分一致検索)を実行させるとともに、その検索結果に基づいて完全一致検索の検索条件式を生成し、検索対象DB101に対する完全一致検索を実行し、その実行結果をユーザに対して提供する機能を有する。すなわち、本検索サーバ112は、部分一致検索受付手段12、検索条件変換手段14及び本検索実行手段15を備える。
また、複数の予備検索サーバ113は、予備検索対象DB102を備え、本検索サーバ112からの要求に応じて予備検索対象DB102に対する予備検索(部分一致検索)を実行し、その実行結果を本検索サーバ112に返信する機能を有する。すなわち、予備検索サーバ113は、予備検索実行手段13を備える。ここで、複数の予備検索サーバ113が備える予備検索対象DB102は、それぞれ重複が排除された文字列項目の内容を記憶する。すなわち、1の予備検索サーバ113の備える予備検索対象DB102に記憶された文字列と、他の予備検索サーバ113の備える予備検索対象DB102に記憶された文字列とは重複しない。
【0048】
このようなシステム構成によれば、予備検索(部分一致検索)を複数の予備検索サーバ113で実行するため、予備検索の処理負担を軽減することができる。また、検索対象DB101の容量が増加したとしても、予備検索サーバ113を増やすというハードウェアの追加といった簡易な方法のみで対応することができ、好適である。
【0049】
[第2実施形態]
次に、第2実施形態の検索システム2について、図9〜図11を参照して説明する。なお、第1実施形態の検索システム1では、検索対象DB101から重複を排除したユニークな内容(文字列)を抽出し予備検索対象DB102に記憶することで、部分一致検索(予備検索)の対象となる予備検索対象を生成していたのに対し、第2実施形態の検索システム2では、システムの管理者が予め設定した内容(文字列)を予備検索対象DB202に記憶しておくことで、予備検索対象を生成する点で異なる。
【0050】
[検索システム2の構成]
以下、第2実施形態の検索システム2の構成について説明する。なお、第1実施形態と同様の構成については、同一の符号を付し、その説明を省略する。
第2実施形態の検索システム2は、部分一致検索受付手段12と、予備検索実行手段13と、検索条件変換手段14と、本検索実行手段15と、検索対象DB101と、検索クエリ受付手段21と、予備検索対象DB202と、を含んで構成される。
【0051】
検索クエリ受付手段21は、ユーザにより入力された検索クエリを受け付け、受け付けた検索クエリを含む各種情報を検索対象DB101に記憶する。ここで、検索クエリ受付手段21は、受け付けた検索クエリにクエリIDを設定して検索対象DB101に記憶するが、クエリIDの設定については、図11で後述する。
【0052】
予備検索対象DB202は、図10に示すように文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する。このとき、予備検索対象DB202に記憶されるレコードは、文字列項目の内容が各々異なる。すなわち、予備検索対象DB202に記憶されるレコードの文字列項目の内容は、全てユニークな内容である。なお、第2実施形態の予備検索対象DB202は、文字列項目の内容として予備検索対象として意味をなす内容を記憶し、これらの内容は、検索システム2の管理者により予め設定される。具体的には、検索システム2の管理者は、予備検索対象として意味をなす内容を必要十分に抽出し、これらの各々に固有の識別情報(クエリID)を付して、予備検索対象DB202に記憶する。
【0053】
ここで、第2実施形態の検索システム2における「予備検索対象として意味をなす内容」は、予備検索対象の種別によって異なる。
例えば、予備検索対象が検索クエリのような文字データである場合には、語として意味をなす単語が「予備検索対象として意味をなす内容」となり、語として意味をなさない文字データが「予備検索対象として意味をなさない内容」となる。例えば、「ソフトクリーム」は語として意味をなす単語であり、「ソフトクリーメ」は語として意味をなさない文字データである。
また、予備検索対象がbcookieのように所定桁数の英数字である場合には、所定桁数の英数字が「予備検索対象として意味をなす内容」となり、所定桁数以外の英数字が「予備検索対象として意味をなさない内容」となる。例えば、予備検索対象が6桁の16進数で表記される文字列である場合には、5桁や7桁などの6桁以外の16進数の文字列は「予備検索対象として意味をなさない内容」となる。
【0054】
第2実施形態の検索システム2では、「予備検索対象として意味をなさない内容」については、予備検索対象DB202に記憶することなく、部分一致検索(予備検索)すら行わない。そのため、第2実施形態の検索システム2では、部分一致検索(予備検索)の対象を最小限にとどめることができ、部分一致検索(予備検索)の処理負担を軽減することができる。
【0055】
なお、上述のように予備検索実行手段13による部分一致検索(予備検索)の実行結果の出力や、その後の完全一致検索(本検索)の実行は、クエリIDに基づいて行うことが好ましい。この点、第2実施形態では、クエリIDの管理方法が第1実施形態と異なるため、図11を参照して、予備検索対象が検索クエリである場合を例にとって、クエリIDの管理方法について説明する。
【0056】
第2実施形態の検索システム2では、管理者により予め単語が用意され、これら単語を識別するクエリIDも管理者により予め設定される。そこで、検索クエリ受付手段21は、ユーザから検索クエリを受け付けると、予備検索対象DB202や図示しないクエリID対応テーブルから当該検索クエリに対応するクエリIDを取得し、検索クエリとクエリIDとを対応付けて検索対象DB101に記憶する。
具体的には、図11を参照して、ユーザから検索クエリとして「ソフト」と受け付けると、検索クエリ受付手段21は、予備検索対象DB202を参照し、単語「ソフト」に対応するクエリID「328」を取得する。そして、検索クエリ受付手段21は、取得したクエリID「328」を検索クエリ「ソフト」に付して、検索対象DB101に記憶する。
【0057】
これにより、第2実施形態の検索システム2においても、クエリIDに基づいて完全一致検索(本検索)を行うことができる。
なお、ユーザから受け付けた検索クエリに対応する単語が予備検索対象DB202に記憶されていない場合には、検索クエリ受付手段21は、当該検索クエリに対してクエリIDを付すことなく、検索対象DB101に記憶する。
【0058】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【0059】
すなわち、本実施形態では、検索ログに含まれる項目「検索クエリ」を検索対象の文字列項目として説明したが、本発明はこれに限られるものではなく、他の文字列項目についても適用可能である。
また、図8に示すシステム構成において、複数の予備検索サーバ113の備える予備検索対象DB102では、それぞれ重複しない文字列を記憶することとしているが、システムの安定性を考慮した文字列項目の重複を排除するものではない。また、図8に示すシステム構成は、第1実施形態の検索システム1だけでなく、第2実施形態の検索システム2についても適用可能である。
また、本実施形態の予備検索対象DB102,202は、重複しないユニークな文字列を記憶することとしているが、複数種類の文字列のうち極少数の文字列を重複させ予備検索対象DB102,202に記憶しても本発明の効果は十分に奏するものであり、本発明の適用を免れるものではない。
【符号の説明】
【0060】
1,2 検索システム
11 ユニーク文字列抽出手段
12 部分一致検索受付手段
13 予備検索実行手段
14 検索条件変換手段
15 本検索実行手段
101 検索対象DB
102,202 予備検索対象DB
21 検索クエリ受付手段
【特許請求の範囲】
【請求項1】
部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、
文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、
前記予備検索対象DBに記憶された前記文字列項目の内容について、所定の検索文字列を用いて部分一致検索を実行する予備検索実行手段と、
前記予備検索実行手段による前記部分一致検索の結果得られた内容のみを検索するための完全一致検索の検索条件式を生成する検索条件変換手段と、
前記検索条件変換手段により生成された前記検索条件式に基づいて、検索対象DBに記憶された検索対象に対する完全一致検索を実行する本検索実行手段と、
を備える検索システム。
【請求項2】
前記予備検索対象DBは、前記文字列項目の内容として管理者により予め設定された内容を記憶する、請求項1に記載の検索システム。
【請求項3】
前記検索対象DBに記憶された前記検索対象から、前記部分一致検索の対象となる前記文字列項目の内容を重複を排除して抽出し、前記予備検索対象DBに予備検索対象として記憶するユニーク文字列抽出手段、をさらに備える請求項1に記載の検索システム。
【請求項4】
前記検索対象DB及び前記予備検索対象DBは、前記検索対象の文字列項目の内容及び前記予備検索対象の文字列項目の内容のうち前記検索対象の文字列項目の内容と同一の内容を同一の識別番号を付して記憶し、
前記予備検索実行手段は、前記部分一致検索の結果として得られた文字列項目の内容に対応付けられた識別番号を出力し、
前記本検索実行手段は、前記予備検索実行手段が出力した前記識別番号を用いて前記完全一致検索を実行する、
請求項1から3の何れかに記載の検索システム。
【請求項5】
前記部分一致検索を行う複数の予備検索サーバ、及び前記完全一致検索を実行する本検索サーバにより構成され、
複数の前記予備検索サーバが、
それぞれ重複が排除された前記文字列項目の内容を記憶する前記予備検索対象DBと、
それぞれが備える前記予備検索対象DBを参照して、前記部分一致検索を実行する前記予備検索実行手段と、を備え、
前記本検索サーバが、前記予備検索サーバによる前記部分一致検索の結果に基づく、前記完全一致検索を実行する前記本検索実行手段を備える、
請求項1から4の何れかに記載の検索システム。
【請求項6】
部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、を備えるコンピュータが実行する、
前記予備検索対象DBに記憶された前記予備検索対象について、所定の検索文字列を用いて部分一致検索を実行するステップと、
前記部分一致検索の結果得られた文字列項目の内容のみを検索するための完全一致検索の検索条件式を生成するステップと、
生成された前記検索条件式に基づいて、前記検索対象DBに記憶された検索対象に対する完全一致検索を実行するステップと、
を含む方法。
【請求項1】
部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、
文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、
前記予備検索対象DBに記憶された前記文字列項目の内容について、所定の検索文字列を用いて部分一致検索を実行する予備検索実行手段と、
前記予備検索実行手段による前記部分一致検索の結果得られた内容のみを検索するための完全一致検索の検索条件式を生成する検索条件変換手段と、
前記検索条件変換手段により生成された前記検索条件式に基づいて、検索対象DBに記憶された検索対象に対する完全一致検索を実行する本検索実行手段と、
を備える検索システム。
【請求項2】
前記予備検索対象DBは、前記文字列項目の内容として管理者により予め設定された内容を記憶する、請求項1に記載の検索システム。
【請求項3】
前記検索対象DBに記憶された前記検索対象から、前記部分一致検索の対象となる前記文字列項目の内容を重複を排除して抽出し、前記予備検索対象DBに予備検索対象として記憶するユニーク文字列抽出手段、をさらに備える請求項1に記載の検索システム。
【請求項4】
前記検索対象DB及び前記予備検索対象DBは、前記検索対象の文字列項目の内容及び前記予備検索対象の文字列項目の内容のうち前記検索対象の文字列項目の内容と同一の内容を同一の識別番号を付して記憶し、
前記予備検索実行手段は、前記部分一致検索の結果として得られた文字列項目の内容に対応付けられた識別番号を出力し、
前記本検索実行手段は、前記予備検索実行手段が出力した前記識別番号を用いて前記完全一致検索を実行する、
請求項1から3の何れかに記載の検索システム。
【請求項5】
前記部分一致検索を行う複数の予備検索サーバ、及び前記完全一致検索を実行する本検索サーバにより構成され、
複数の前記予備検索サーバが、
それぞれ重複が排除された前記文字列項目の内容を記憶する前記予備検索対象DBと、
それぞれが備える前記予備検索対象DBを参照して、前記部分一致検索を実行する前記予備検索実行手段と、を備え、
前記本検索サーバが、前記予備検索サーバによる前記部分一致検索の結果に基づく、前記完全一致検索を実行する前記本検索実行手段を備える、
請求項1から4の何れかに記載の検索システム。
【請求項6】
部分一致検索の目的となる文字列項目を含む複数の項目を含んで構成される複数のレコードを検索対象として記憶する検索対象DBと、文字列項目を含んで構成される複数のレコードを予備検索対象として記憶する予備検索対象DBであって、前記文字列項目の内容が前記予備検索対象として意味をなす内容である予備検索対象DBと、を備えるコンピュータが実行する、
前記予備検索対象DBに記憶された前記予備検索対象について、所定の検索文字列を用いて部分一致検索を実行するステップと、
前記部分一致検索の結果得られた文字列項目の内容のみを検索するための完全一致検索の検索条件式を生成するステップと、
生成された前記検索条件式に基づいて、前記検索対象DBに記憶された検索対象に対する完全一致検索を実行するステップと、
を含む方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−128718(P2012−128718A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−280420(P2010−280420)
【出願日】平成22年12月16日(2010.12.16)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願日】平成22年12月16日(2010.12.16)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】
[ Back to top ]