(57)【要約】      （修正有）【課題】検索サーバでの検索結果のマージ処理の負荷を低減し、分散検索における拡張性を高める検索方法を提供する。【解決手段】検索用サーバが、検索用サーバリストにある検索用サーバ数から検索の多重度ｍを計算する。計算した多重度ｍに基づき、検索用サーバリストをなるべく均等にｍ分割し、それぞれの代表ノードに対して検索クエリと、分割した検索用サーバリストを渡す。分割したサーバリストを渡された検索用サーバが、リスト内の検索用サーバ数が最大マージノード数Ｍより多い場合、再度検索用サーバリストの分割と転送を実行する。サーバリスト内のサーバ数が最大マージノード数以下の場合に、インデクス格納サーバに対して検索処理を実行し、取得した検索結果に対してマージ処理を実行する。マージ処理を行った検索用サーバに対して、呼び出し元の検索用サーバが存在する場合、呼び出し元のサーバでマージ処理を行う。【選択図】図８
2015201069.tif 000002
【特許請求の範囲】
【請求項１】
検索用サーバが検索エンジン管理データベースに登録してある検索用サーバのリストを問い合わせるステップと、取得した検索用サーバリストにある検索用サーバ数から検索の多重度ｍを計算するステップと、計算した多重度ｍに基づき、検索用サーバリストを分割後のサーバリストに含まれるサーバ数の差が小さくなるようにｍ分割し、それぞれの代表ノードに対して検索クエリと、分割した検索用サーバリストを渡すステップと、分割したサーバリストを渡された検索用サーバが、リスト内の検索用サーバ数が最大マージノード数Ｍより多い場合、再度検索用サーバリストの分割と転送を実行するステップと、サーバリスト内のサーバ数が最大マージノード数以下の場合に、インデクス格納サーバに対して検索処理を実行するステップと、取得した検索結果に対してマージ処理を実行するステップと、マージ処理を行った検索用サーバに対して、呼び出し元の検索用サーバが存在する場合、呼び出し元のサーバでマージ処理を行うステップを備え、
前記検索の多重度ｍを計算するステップは、サーチノード数をＮ（Ｎ≧１）、１ノードあたりの最大マージノード数をＭ（Ｍ≧１）として、
【数４】
2015201069.tif 000006
を満たす最小の自然数を分割の深さｄとし、Ｎのｄ乗根の小数点を切り上げた値をｍとして決定することを特徴とする多段分散検索方法。
【請求項２】
検索用サーバが検索エンジン管理データベースに登録してある検索用サーバのリストを取得する問い合わせ手段と、取得した検索用サーバリストにある検索用サーバ数から検索の多重度ｍを算出する計算手段と、計算した多重度ｍに基づき、検索用サーバリストをなるべく均等にｍ分割し、それぞれの代表ノードに対して検索クエリと、分割した検索用サーバリストを渡す通信手段と、分割したサーバリストを渡された検索用サーバが、リスト内の検索用サーバ数が最大マージノード数Ｍより多い場合、再度検索用サーバリストの分割と転送を実行する通信手段と、サーバリスト内のサーバ数が最大マージノード数以下の場合に、インデクス格納サーバに対して検索処理を実行する検索手段と、取得した検索結果に対してマージ処理を実行する手段と、マージ処理を行った検索用サーバに対して、呼び出し元の検索用サーバが存在する場合、呼び出し元のサーバでマージ処理を行うマージ手段とを備え、
前記検索の多重度ｍを算出する計算手段が、サーチノード数をＮ（Ｎ≧１）、１ノードあたりの最大マージノード数をＭ（Ｍ≧１）として、
【数５】
2015201069.tif 000007
を満たす最小の自然数を分割の深さｄとし、Ｎのｄ乗根の小数点を切り上げた値をｍとして決定することを特徴とする多段分散検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のファイルサーバ内に保存されたファイルデータを効率良く解析するための技術に関するものであり、特に、検索システムにおいて効率的に分散検索を実行できる多段分散検索方法及びシステムに関するものである。
【背景技術】
【０００２】
近年、コンピュータ性能の高速化、記憶媒体装置の大容量化に伴い、膨大な数の非定型文書が作られるようになっている。このような文書の増加を受けて、文書を保存するサーバの数も比例して増えていく傾向にある。そのため、複数のサーバにわたって格納されている膨大な数の文書の中から、必要とする文書を高速かつ的確に探し出す検索システムの必要性が高まっている。
このように検索対象となるサーバが複数ある場合に、検索を効率的に行うための手法として、分散検索という手法が存在する。分散検索では、検索を行う対象を分割して別々に検索を行い、その後にそれぞれの検索結果をマージする手法がとられている。
分散検索においては、処理速度向上のためにさまざまな方法が考えられている。例えば、検索を行う対象を検索時にかかるコスト情報から選定する方法が存在する（下記先行技術文献参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１７１５９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通常の検索と同様に、分散検索においても検索対象となる文書が増加することで処理性能が低下してしまう。この現象に対して、検索対象の分割方法や検索機能自体の性能向上により分散検索の効率を向上させることができる。
しかしながら、分散検索において検索性能を向上しても、検索結果のマージ処理で膨大な量のデータのマージを行う必要があり、マージによる負荷の集中がボトルネックとなり分散検索の処理ノードの拡張性が低くなってしまうという問題がある。
【０００５】
本発明の目的は、検索サーバでの検索結果のマージ処理を段階的かつ並列的に行うことで、マージ時の負荷を低減することができる多段分散検索方法およびシステムを提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明に係る多段分散検索方法は、検索用サーバが検索エンジン管理データベースに登録してある検索用サーバのリストを問い合わせるステップと、取得した検索用サーバリストにある検索用サーバ数から検索の多重度ｍを計算するステップと、計算した多重度ｍに基づき、検索用サーバリストを分割後のサーバリストに含まれるサーバ数の差が小さくなるようにｍ分割し、それぞれの代表ノードに対して検索クエリと、分割した検索用サーバリストを渡すステップと、分割したサーバリストを渡された検索用サーバが、リスト内の検索用サーバ数が最大マージノード数Ｍより多い場合、再度検索用サーバリストの分割と転送を実行するステップと、サーバリスト内のサーバ数が最大マージノード数以下の場合に、インデクス格納サーバに対して検索処理を実行するステップと、取得した検索結果に対してマージ処理を実行するステップと、マージ処理を行った検索用サーバに対して、呼び出し元の検索用サーバが存在する場合、呼び出し元のサーバでマージ処理を行うステップを備え、
前記検索の多重度ｍを計算するステップは、サーチノード数をＮ（Ｎ≧１）、１ノードあたりの最大マージノード数をＭ（Ｍ≧１）として、
【数１】
2015201069.tif 000003
を満たす最小の自然数を分割の深さｄとし、Ｎのｄ乗根の小数点を切り上げた値をｍとして決定することを特徴とする。
【０００７】
また、本発明に係る多段分散検索システムは、検索用サーバが検索エンジン管理データベースに登録してある検索用サーバのリストを取得する問い合わせ手段と、取得した検索用サーバリストにある検索用サーバ数から検索の多重度ｍを算出する計算手段と、計算した多重度ｍに基づき、検索用サーバリストをなるべく均等にｍ分割し、それぞれの代表ノードに対して検索クエリと、分割した検索用サーバリストを渡す通信手段と、分割したサーバリストを渡された検索用サーバが、リスト内の検索用サーバ数が最大マージノード数Ｍより多い場合、再度検索用サーバリストの分割と転送を実行する通信手段と、サーバリスト内のサーバ数が最大マージノード数以下の場合に、インデクス格納サーバに対して検索処理を実行する検索手段と、取得した検索結果に対してマージ処理を実行する手段と、マージ処理を行った検索用サーバに対して、呼び出し元の検索用サーバが存在する場合、呼び出し元のサーバでマージ処理を行うマージ手段とを備え、
前記検索の多重度ｍを算出する計算手段が、サーチノード数をＮ（Ｎ≧１）、１ノードあたりの最大マージノード数をＭ（Ｍ≧１）として、
【数２】
2015201069.tif 000004
を満たす最小の自然数を分割の深さｄとし、Ｎのｄ乗根の小数点を切り上げた値をｍとして決定することを特徴とする。
【発明の効果】
【０００８】
以上のように本発明の多段分散検索方法によれば、、分割した検索対象に対して複数のサーバで平行に検索・マージ処理を行い、その結果に対してさらに複数のサーバで平行に検索・マージ処理を行うことを繰り返し、１回のマージあたりの負荷を減らし、マージを同時実行して処理性能を高めることで、マージ時の負荷を低減し、分散検索における拡張性を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施の形態を示すシステム構成図である。
【図２】検索用サーバリストのデータ構成図である。
【図３】検索命令に対してインデクス格納サーバが返す検索結果のデータ構成図である。
【図４】本発明のフローチャートである。
【図５】検索用サーバリストの分割処理の説明図である。
【図６】検索結果のマージ処理の説明図である。
【図７】検索結果のマージ処理の説明図である。
【図８】本発明の一実施の形態例を示す模式図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施する場合の実施形態について、図面に基づき詳細に説明する。
図１は、本発明に係る一実施の形態におけるシステム構成図である。
図１に示した多段分散検索システムは、検索エンジン管理データベース１、検索用サーバ群２、インデクス格納サーバ群３を、ＬＡＮ（Local Area Network）４等の有線又は無線の通信回線により互いに通信可能に接続したシステムである。
図１においては、サーバ等はＬＡＮ４によって互いに通信可能に接続されているが、接続方法はＬＡＮに限定されるものではなく、例えばＷＡＮ（Wide Area Network）やインターネットによって接続されていてもよい。
また、図１においては、サーバ等が同一ＬＡＮセグメント上で接続されているが、この構成は一例に過ぎず、どのような構成になっていてもよい。さらに、図１においては、検索エンジン管理データベース１、検索用サーバ群２、およびインデクス格納サーバ群３はそれぞれ１台ずつ存在しているが、それぞれ２台以上存在しても構わない。また、検索エンジン管理データベース１、検索用サーバ群２、およびインデクス格納サーバ群３はそれぞれ異なる装置である必要はなく、例えば、検索エンジン管理データベース１、検索用サーバ群２、およびインデクス格納サーバ群３の機能を１台の装置によって実現することも可能である。
以上のような構成により、検索エンジン管理データベース１は検索用サーバ群２がインデクス格納サーバ群３を検索する際に使用する検索用サーバの一覧を提供する。
【００１１】
検索エンジン管理データベース１はキーバリュー型のデータベースであり、ＰＣ等の装置に搭載されている。検索エンジン管理データベース１を搭載した装置は記憶装置１１と通信可能に接続されている。
記憶装置１１は磁気ディスク等の装置であり、検索エンジン管理データベース１に内蔵され又は外部接続される。記憶装置１１と、検索エンジン管理データベース１の主記憶装置等は、検索エンジン管理データベース１の記憶手段として機能する。記憶装置１１には、検索用サーバリスト１２が記憶されている。検索用サーバリスト１２には、検索用サーバ群２を構成する検索用サーバの一覧が記憶されている。
検索用サーバ群２は、検索用サーバの集合体であり、すべての検索用サーバが相互に接続され、各サーバが多段分散検索実行手段２１を実行できる。
多段分散検索実行手段２１は検索エンジン管理データベース１から取得した検索用サーバリスト１２を使用して、検索用サーバ群２内のサーバに記憶装置３１に内蔵されているインデクス情報３２を検索させる。
記憶装置３１は磁気ディスク等の装置であり、インデクス格納サーバ群３に内蔵され又は外部接続される。記憶装置３１と、インデクス格納サーバ郡３の主記憶装置等は、インデクス格納サーバ郡３の記憶手段として機能する。記憶装置３１には、インデクス情報３２が記憶されている。インデクス情報３２には、検索に使用するインデクス情報が記憶されている。
【００１２】
図２は、検索エンジン管理データベース１が管理する検索用サーバリスト１２のデータ構成図である。検索用サーバリスト１２には、１つ以上の検索用サーバ情報２００が格納されている。
具体的には検索用サーバ情報２００には検索用サーバを一意に識別するためのキーが設定される。例えばキー値２０１が「０ｘ０１２２」である検索用サーバの検索用サーバ情報２０２は、アドレス２０３が「１９２．１０．２４．ＸＸＸ」、ポート番号２０４が「２０５６」のサーバただ１つに特定される。
【００１３】
図３は、検索用サーバ群２からの検索命令に対してインデクス格納サーバ群３が返す検索結果のデータ構成図である。このとき、インデクス格納サーバ群３は、０個以上のレコードを持ったインデクス情報検索結果３００を返す。
インデクス情報検索結果３００は、検索結果の順位３０１と、検索結果の順位３０１を決定する検索結果のスコア３０２、インデクス対象オブジェクトＵＲＩ３０３、オブジェクト内の検索単語をハイライトする文字列３０４で構成されている。検索結果の順位３０１は、検索結果のスコア３０２の高い順に１位から順に順位をつける。
例えば、検索結果のスコア３０２が高い順に「５４．２」、「３６．６」、「９．８」となっていた場合は、検索結果の順位３０１は順に１，２，３となる。検索結果のスコア３０２は、ユーザが入力した検索キーワードとオブジェクト内の検索単語をハイライトする文字列３０４の関連が大きいほど高いスコアとなる。
【００１４】
図４は、多段分散検索システムの手順を示したフローチャートである。
最初のステップでは、検索用サーバが検索エンジン管理データベース１に登録してある検索用サーバのリストを問い合わせる（Ｓ４０１）。
その後、取得した検索用サーバリストにある検索用サーバ数から検索の多重度ｍを計算する（Ｓ４０２）。多重度ｍを決定する計算式は、サーチノード数をＮ（Ｎ≧１）、１ノードあたりの最大マージノード数をＭ（Ｍ≧１）として、このとき
【数３】
2015201069.tif 000005
を満たす最小の自然数を分割の深さｄ、Ｎのｄ乗根の小数点を切り上げた値を多重度ｍとする。上記の式に従うことで、多重度を最大マージノード数以下の数値で最大にし、かつ深さを最小にすることができる。
計算した多重度ｍに基づき、検索用サーバリストを分割後のサーバリストに含まれるサーバ数の差が小さくなるようにｍ分割し、それぞれの代表ノードに対して検索クエリと、分割した検索用サーバリストを渡す（Ｓ４０３）。
具体的に、分割後のサーバリストに含まれるサーバ数の差が小さくなるようにというのは、例えば10個のサーバを4等分する際に3,3,2,2に分割することである。
このように分割することで、最大マージノード数を満たしつつ深さを最小にし、リストを割り当てるサーバ数を多くすることができる。
【００１５】
分割したサーバリストを渡された検索用サーバは、リスト内の検索用サーバ数が最大マージノード数Ｍより多い場合、Ｓ４０３のステップを再度実行する（Ｓ４０４）。
サーバリスト内のサーバ数が最大マージノード数以下の場合は、サーバリスト内の検索用サーバに対応したインデクス格納サーバに対して検索処理を実行する（Ｓ４０５）。
検索用サーバは取得した検索結果に対してマージ処理を実行する（Ｓ４０６）。
マージ処理を行った検索用サーバに対して、呼び出し元の検索用サーバが存在する場合、呼び出し元の検索用サーバでマージ処理を行う（Ｓ４０７）。Ｓ４０７を、呼び出し元の検索用サーバがなくなるまで繰り返すことで、多段分散検索が完了する。
【００１６】
図８に、ｍ多重の分散検索を深さｄまで繰り返すことを模式的に示している。
具体的に、検索用サーバ数Ｎを「１０」、１ノードあたりの最大マージノード数Ｍを「３」としたときの検索処理の様子を説明する。このとき、多重度ｍは「３」、分割の深さｄは「３」となる。
まず、検索命令を受け取ったサーバ「１７２．１９．２８．１」は検索エンジン管理データベースから図５の検索用サーバリスト５０１を取得する。このとき、検索用サーバリスト５０１には検索用サーバが１７２．１９．２８．［１−１０］の１０台あり、最大マージノード数より大きいため多重度に従い３分割する。
分割の結果、１７２．１９．２８．［１−４］のリストを１７２．１９．２８．１のサーバに、１７２．１９．２８．［５−７］のリストを１７２．１９．２８．５に、１７２．１９．２８．［８−１０］のリストを１７２．１９．２８．８に割り当てる。このとき、検索用サーバリスト５０３、５０４に存在する検索用サーバ数は３となり、最大マージノード数以下のため検索用サーバリストの分割を終了する。
【００１７】
検索用サーバリスト５０２には検索用サーバが４つ存在するため再度分割を行う。
再分割の結果、１７２．１９．２８．［１−２］の検索用サーバリスト５０５を１７２．１９．２８．１のサーバに、１７２．１９．２８．３の検索用サーバリスト５０６を１７２．１９．２８．３に、１７２．１９．２８．４の検索用サーバリスト５０７を１７２．１９．２８．４に割り当てる。
各サーバリストに存在する検索用サーバ数が最大マージノード数以下となったため、ここで分割を終了する。
【００１８】
分割が終了した検索用サーバは、割り当てられた検索用サーバリスト内のサーバが対応するインデクス格納サーバに対して検索を実行する。１７２．１９．２８．１のサーバは、１７２．１９．２８．［１−２］のリスト（５０５）が割り当てられているため、１７２．１９．２８．１と１７２．１９．２８．２を検索し、検索結果である６０１と６０２をマージして６０３の検索結果を得る。
検索用サーバリスト５０５の分割元である検索用サーバリスト５０２は、５０５、５０６、５０７の３つの検索用サーバリストに分割されているので、それぞれの検索用サーバリストの検索結果である図６の６０３，６０４，６０５をマージして６０６の検索結果を得る。
【００１９】
このように上位へのマージを繰り返し、最終的にサーバ１７２．１９．２８．１は検索用サーバリスト５０２，５０３，５０４に対応した検索結果である図７の７０１，７０２，７０３をマージして検索結果７０４を得る。検索結果７０４に対応する検索用サーバリスト５０１に分割元となる検索用サーバリストは存在しないため、ここで多段分散検索は終了となる。
【符号の説明】
【００２０】
１      検索エンジン管理データベース
２      検索用サーバ群
３      インデクス格納サーバ群
４      ネットワーク
２００  検索用サーバ情報
３００  インデクス情報検索結果
【図１】
2015201069.tif 000008
【図２】
2015201069.tif 000009
【図３】
2015201069.tif 000010
【図４】
2015201069.tif 000011
【図５】
2015201069.tif 000012
【図６】
2015201069.tif 000013
【図７】
2015201069.tif 000014
【図８】
2015201069.tif 000015