(57)【要約】  【課題】  データの一貫性を維持しつつ、少ない計算機リソースで可用性向上・負荷分散を両立する。  【解決手段】  文書検索システム１００のクライアント装置１０１は、文書検索要求を発行し、振り分け装置１０２は、クライアント装置１０１からの文書検索要求を、検索範囲に基づいて、文書検索サーバ２００、３００に振り分ける。振り分け装置１０２は、一方の文書検索サーバが故障したときには他方の文書検索サーバが代行するように、検索範囲および文書検索サーバ２００、３００の運用状態に応じて、クライアント装置１０１からの文書検索要求を文書検索サーバ２００、３００に振り分ける。インデックス転送部２０７、３０７は、インデックス生成部２０１、３０１で生成された検索インデックスを他の文書検索サーバ３００、２００の補助検索インデックス記憶部３０８、２０８に反映させるためにインデックス情報を転送する。【選択図】  図３
2007018143.tif 000002
【特許請求の範囲】
【請求項１】
所定の第１の文書群に対して検索インデックスを生成する検索インデックス生成手段と、
上記検索インデックス生成手段により生成された検索インデックスを保持する検索インデックス保持手段と、
ユーザからの文書検索要求に対して、上記検索インデックス保持手段に保持されている検索用インデックスを用いて文書検索を行なう検索手段と、
所定の第２の文書群に対する他の文書検索装置の検索インデックスを保持する補助検索インデックス保持手段とを有し、
上記検索手段に上記所定の第２の文書群に対する検索要求があったときに上記補助検索インデックス保持手段の検索インデックスを用いて文書検索を行なうことを特徴とする文書検索装置。
【請求項２】
上記所定の第２の文書群に対する他の文書検索装置が保持する当該所定の第２の文書群に対する検索インデックスまたはその差分を上記補助検索インデックスにコピーするようにした請求項１記載の文書検索装置。
【請求項３】
上記補助検索インデックス保持手段は、上記所定の第２の文書群に対する他の文書検索装置が文書検索に用いる検索インデックスを保持する検索インデックス保持手段である請求項１記載の文書検索装置。
【請求項４】
複数の文書検索装置からなる文書検索システムにおいて、
上記複数の文書検索装置の各々は、
該当する文書群に対して検索インデックスを生成する検索インデックス生成手段と、
上記検索インデックス生成手段により生成された検索インデックスを保持する検索インデックス保持手段と、
ユーザからの文書検索要求に対して、上記検索インデックス保持手段に保持されている検索用インデックスを用いて文書検索を行なう検索手段と、
他の文書検索装置の検索インデックスを保持する補助検索インデックス保持手段とを有し、
上記検索手段に上記他の文書検索装置の検索対象とする文書群に対する検索要求があったときに上記補助検索インデックス保持手段の検索インデックスを用いて文書検索を行なうことを特徴とする文書検索装置。
【請求項５】
検索要求を検索対象文書群に応じて上記複数の検索装置の１つに振り分ける振り分け手段をさらに有する文書検索システム。
【請求項６】
上記複数の文書検索装置の稼働状態を検出する検出手段をさらに有し、稼働状態にない文書検索装置の文書群に対する検索要求を他の稼働状態の文書検索装置に対して送出する請求項４または５記載の文書検索システム。
【請求項７】
検索インデックス生成手段が所定の第１の文書群に対して検索インデックスを生成するステップと、
検索インデックス保持手段が上記検索インデックス生成手段により生成された検索インデックスを記憶するステップと、
検索手段が、ユーザからの文書検索要求に対して、上記検索インデックス保持手段に保持されている検索用インデックスを用いて文書検索を行なうステップと、
補助検索インデックス保持手段が、所定の第２の文書群に対する他の文書検索装置の検索インデックスを記憶するステップとを有し、
上記検索手段に上記所定の第２の文書群に対する検索要求があったときに上記補助検索インデックス保持手段の検索インデックスを用いて文書検索を行なうことを特徴とする文書検索方法。
【請求項８】
検索インデックス生成手段が所定の第１の文書群に対して検索インデックスを生成するステップと、
検索インデックス保持手段が上記検索インデックス生成手段により生成された検索インデックスを記憶するステップと、
検索手段が、ユーザからの文書検索要求に対して、上記検索インデックス保持手段に保持されている検索用インデックスを用いて文書検索を行なうステップと、
補助検索インデックス保持手段が、所定の第２の文書群に対する他の文書検索装置の検索インデックスを記憶するステップとをコンピュータに実行させるために用いられ、さらに、
上記検索手段に上記所定の第２の文書群に対する検索要求があったときに上記補助検索インデックス保持手段の検索インデックスを用いて文書検索を行なうようにすることを特徴とする文書検索用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、文書検索技術に関し、とくに、データの一貫性を可能な限り維持しつつ、可用性向上・負荷分散を行い、限られた計算機リソースにより、特殊なハードウェアを用いることなく実現しようとするものである。
【背景技術】
【０００２】
従来、データベースや検索システムの可用性向上・負荷分散のため、さまざまなシステムが提案されている。
【０００３】
特許文献１は、非常に大きなデータベース管理システムにホットスペア冗長性を実現する手法を開示している。この文献では、トランザクションロガーがセカンダリシステムのトランザクションをコミットさせることを開示している。ホットスペア冗長性は、データの一貫性を追求する考え方としては一般的であり、データベースシステムにおいては重要である。ただし、ホットスペアの考え方は、冗長なセカンダリデータベースを必要とするため、非トラブル時のコンピュータリソースとしては無駄になる。
【０００４】
他方、特許文献２は、同期に多少の誤差が許される用途向けに、インデックス反映の時期を最適化することを開示している。これにより、同期の誤差と、設備の負荷という相反する要素をバランスさせようとしている。この方式は、更新頻度が低いなど、個別の状況によって負荷分散が期待できる効果はあるが、最新のデータが得られない可能性があり、一貫性という観点からは問題がある。
【０００５】
以上のように、従来技術はそれぞれ欠点があり、それらを組み合わせではその欠点をカバーできなかった。
【０００６】
図１は特許文献１の手法を文書検索システムに適用した例を示す。この例ではリポジトリＡのキャビネット１、２の文書を検索システムＡ（マスタ）、Ａ’（スタンバイ）で検索するようになっており、そのキャビネット１、２のインデックス１、２を記憶システム（ＮＡＳ／ＳＡＮ、ＲＡＩＤによる冗長性あり。Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ／Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）に保持している。また、リポジトリＢのキャビネット３の文書を検索システムＢ（マスタ）、Ｂ’（スタンバイ）で検索するようになっており、そのキャビネット３のインデックス３を同様に記憶システムに保持している。通常には、検索システムＡ、Ｂを用い、検索システムＡ、Ｂが故障したときにはスタンバイの検索システムＡ’、Ｂ’を用いるようになっている。図で実線は運用システムの動作を、破線は待機中であることを示す。図の例は、検索システムＡが故障して、検索システムＡ’が代替的に検索を行なっている状況を示す。
【０００７】
図２は他の従来の範疇の冗長サーバを導入して実現した文書検索システムの例を示す。図２の例では、マスタ検索システムＡが検索要求をスレーブ検索システムＡ１、Ａ２に振り分け、スレーブ検索システムＡ１、Ａ２がインデックス１、２を用いて検索を行なう。この例で、例えばスレーブ検索システムＡ１が故障した場合には、残りのスレーブ検索システムＡ２がすべての検索要求を処理する。
【０００８】
データの一貫性を維持しつつ、少ない計算機リソースで可用性向上・負荷分散を両立できるような検索方法はなかった。
【特許文献１】特開平１１−３２７９９１号公報
【特許文献２】特開２００１−１４３３６公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
この発明は、以上の事情を考慮してなされたものであり、データの一貫性を維持しつつ、少ない計算機リソースで可用性向上・負荷分散を両立できる検索システムを提供することを目的としている。
【課題を解決するための手段】
【００１０】
この発明の構成例では、上述の目的を達成するために、用意する複数サーバのそれぞれをアクティブスタンバイとし、適切なトリガ発生時に相互に情報を反映する。それぞれのサーバは、当初の受け持ちの範囲の検索要求を処理する。そして適宜なタイミングで他のサーバからインデックス情報を取得して当該他のサーバのインデックスを保持する。所定のサーバが故障したときには、他のサーバが本来の検索サービスに加えて当該故障したサーバの検索サービスも実行する。
【００１１】
さらにこの発明を説明する。
【００１２】
この発明の一側面によれば、上述の目的を達成するために、文書検索装置に：所定の第１の文書群に対して検索インデックスを生成する検索インデックス生成手段と；上記検索インデックス生成手段により生成された検索インデックスを保持する検索インデックス保持手段と；ユーザからの文書検索要求に対して、上記検索インデックス保持手段に保持されている検索用インデックスを用いて文書検索を行なう検索手段と；所定の第２の文書群に対する他の文書検索装置の検索インデックスを保持する補助検索インデックス保持手段とを設け、上記検索手段に上記所定の第２の文書群に対する検索要求があったときに上記補助検索インデックス保持手段の検索インデックスを用いて文書検索を行なうようにしている。
【００１３】
この構成においては、通常に運用している文書検索装置が、故障した他の文書検索装置の検索サービスを代行するので、データの一貫性を維持しつつ、少ない計算機リソースで可用性向上・負荷分散を両立できる。
【００１４】
この構成において、上記所定の第２の文書群に対する他の文書検索装置が保持する当該所定の第２の文書群に対する検索インデックスまたはその差分を上記補助検索インデックスにコピーするようにすることが好ましい。
【００１５】
また、上記補助検索インデックス保持手段は、典型的には、上記所定の第２の文書群に対する他の文書検索装置が文書検索に用いる検索インデックスを保持する検索インデックス保持手段である。すなわち、２つの検索装置を例に挙げれば、一方の検索インデックス記憶手段が他方の補助検索インデックス記憶手段として動作する。
【００１６】
また、この発明の他の側面によれば、複数の文書検索装置からなる文書検索システムにおいて、上記複数の文書検索装置の各々が：該当する文書群に対して検索インデックスを生成する検索インデックス生成手段と；上記検索インデックス生成手段により生成された検索インデックスを保持する検索インデックス保持手段と；ユーザからの文書検索要求に対して、上記検索インデックス保持手段に保持されている検索用インデックスを用いて文書検索を行なう検索手段と；他の文書検索装置の検索インデックスを保持する補助検索インデックス保持手段とを有し、上記検索手段に上記他の文書検索装置の検索対象とする文書群に対する検索要求があったときに上記補助検索インデックス保持手段の検索インデックスを用いて文書検索を行なうようにしている。
【００１７】
この構成においても、データの一貫性を維持しつつ、少ない計算機リソースで可用性向上・負荷分散を両立できる。
【００１８】
この構成において、検索要求を検索対象文書群に応じて上記複数の検索装置の１つに振り分ける振り分け手段をさらに設けても良い。
【００１９】
また、上記複数の文書検索装置の稼働状態を検出する検出手段をさらに設け、稼働状態にない文書検索装置の文書群に対する検索要求を他の稼働状態の文書検索装置に対して送出するようにしてもよい。
【００２０】
なお、この発明は装置またはシステムとして実現できるのみでなく、方法としても実現可能である。また、そのような発明の一部をソフトウェアとして構成することができることはもちろんである。またそのようなソフトウェアをコンピュータに実行させるために用いるソフトウェア製品もこの発明の技術的な範囲に含まれることも当然である。
【００２１】
この発明の上述の側面および他の側面は特許請求の範囲に記載され以下実施例を用いて詳述される。
【発明の効果】
【００２２】
この発明によれば、通常に運用している文書検索装置が、故障した他の文書検索装置の検索サービスを代行するので、データの一貫性を維持しつつ、少ない計算機リソースで可用性向上・負荷分散を両立できる。
【発明を実施するための最良の形態】
【００２３】
以下、この発明の実施例について説明する。
【００２４】
図３は、この発明の実施例の文書検索システム１００を模式的に示すものであり、図４は当該文書検索システム１００の動作例を説明するものである。この例では文書検索システム１００が２つの文書検索サーバ２００、３００からなるが、これに限定されず、３つ以上の文書検索サーバを用いても良い。文書検索サーバ２００、３００を構成する機能ブロックは、当該サーバのハードウェア資源およびソフトウェア資源を協働させて実現される。
【００２５】
図３において、文書検索システム１００は、クライアント装置１０１、振り分け装置１０２、文書検索サーバ２００、３００を含んで構成される。各構成要素は適宜に通信ネットワークで接続される。クライアント装置１０１は、文書検索要求を発行するものであり、例えば、パーソナルコンピュータ等の各種ホストにより実現される。振り分け装置１０２は、クライアント装置１０１からの文書検索要求を文書検索サーバ２００、３００に振り分けるものである。この例では、例えば図４に示すように、通常時には、文書検索サーバ２００がキャビネット１およびキャビネット２の文書に関する検索サービスを提供し、他の文書検索サーバ３００がキャビネット３およびキャビネット４の文書に関する検索サービスを提供している。そして、一方の文書検索サーバが故障したときには他方の文書検索サーバが代行するようになっている。振り分け装置１０２は、検索範囲および文書検索サーバ２００、３００の運用状態に応じて、クライアント装置１０１からの文書検索要求を文書検索サーバ２００、３００に振り分ける。振り分け装置１０２は、例えば、リダイレクト機構を用いて実現出来る。ウェブベースで検索要求を発行する場合には、ＣＧＩプログラムで振り分け先を記述することができる。
【００２６】
文書検索サーバ２００および文書検索サーバ３００は相互に補完して文書検索サービスを提供するようになっている。すなわち、文書検索サーバ２００は、プライマリサーバとして文書群記憶部４００の文書に対する文書検索サービスを提供するものであり、文書群記憶部４００は、図４にも示すように、例えばキャビネット１、２の文書を保持するものである。文書検索サーバ３００は、プライマリサーバとして文書群記憶部５００の文書に対する文書検索サービスを提供するものであり、文書群記憶部５００は、図４にも示すように、例えばキャビネット３、４の文書を保持するものである。文書検索サーバ２００は、同時に、文書検索サーバ３００が故障しているときに、セカンダリサーバとして文書群記憶部５００の文書に対する文書検索サービスを提供し、文書検索サーバ３００は、文書検索サーバ２００が故障しているときに、セカンダリサーバとして文書群記憶部４００の文書に対する文書検索サービスを提供する。なお、文書群記憶部４００を後述の文書群記憶部５００と個別に示しているが、これらは１つの記憶部であってもよい。図４ではリポジトリ部として１つの機能部分として示されている。
【００２７】
文書検索サーバ２００は、インデックス生成部２０１、検索インデックス記憶部２０２、検索式入力部２０３、検索部２０４、検索結果出力部２０５、ハートビート送信部２０６、インデックス転送部２０７、補助検索インデックス記憶部２０８等を含んで構成されている。
【００２８】
インデックス生成部２０１は、文書群記憶部４００の文書を参照して当該文書の検索インデックスを生成して検索インデックス記憶部２０２に記憶する。検索インデックスは、全文検索インデックスでも良いし、関連文書検索インデックスでもよい。検索式入力部２０３は、クライアント装置１０１から送られてきた検索要求の検索式を振り分け装置１０２を介して受け取る。検索部２０４は、検索式に合致する文書を検索インデックス記憶部２０２を参照して特定して検索結果とする。検索結果出力部２０５は検索結果をクライアント装置１０１に供給する。
【００２９】
インデックス転送部２０７は、インデックス生成部２０１で生成された検索インデックスを他の文書検索サーバ３００の補助検索インデックス記憶部３０８に反映させるためにインデックス情報を転送するものである。典型的には、検索インデックス記憶部２０７へ検索インデックスを書き込むトランザクションのログをとっておき、これを所定のタイミングでトリガして文書検索サーバ３００の補助検索インデックス記憶部３０８にコミットすればよい。所定のタイミングは時間の経過でも良いし、あらたに検索インデックスが登録された文書の数でも良い。
【００３０】
文書検索サーバ２００の補助検索インデックス記憶部２０８は文書検索サーバ３００のインデックス転送部３０７から検索インデックスを受け取り、文書検索サーバ３００の検索サービスの範囲である文書群記憶部５００の文書についての検索インデックスを保持する。
【００３１】
ハートビート送信部２０６は、文書検索サーバ２００が運用中である場合に所定の時間間隔でハートビート信号を振り分け装置１０２に送信する。振り分け装置１０２は、文書検索サーバ２００のハートビート送信部２０６からハートビート信号を受け取っているときには、文書検索サーバ２００が運用中であると判断して対応する検索範囲の検索要求を文書検索サーバ２００に送信する。
【００３２】
振り分け装置１０２は、文書検索サーバ２００のハートビート送信部２０６からのハートビート信号が途絶え、かつ、文書検索サーバ３００のハートビート送信部３０６からのハートビート信号が継続している場合には、本来、文書検索サーバ２００に送信すべき検索要求を文書検索サーバ３００に送信する。逆に、文書検索サーバ３００のハートビート送信部３０６からのハートビート信号が途絶え、かつ、文書検索サーバ２００のハートビート送信部２０６からのハートビート信号が継続している場合には、振り分け装置１０２は、本来、文書検索サーバ３００に送信すべき検索要求を文書検索サーバ２００に送信する。文書検索サーバ２００、３００の双方からのハートビートが途絶えた場合には、振り分け装置１０２はエラーをクライアント装置１０１に返す。
【００３３】
文書検索サーバ２００および文書検索サーバ３００は同一の構成となっており、文書検索サーバ３００の各部には３００番台の対応する符号を付して詳細な説明は繰り返さない。
【００３４】
つぎに、この実施例の動作例を説明する。図４にも示すように、リポジトリ情報のそれぞれに対し、プライマリサーバとセカンダリサーバを設定する（検索Ａ、検索Ｂ）。キャビネット１、２は検索Ａ（文書検索サーバ２００）、キャビネット３、４は検索Ｂ（文書検索サーバ３００）に割り当てる。通常運用時では、検索に関してはプライマリサーバのみにアクセスする。例えばキャビネット１、２の文書に対する文書検索に対しては検索Ａを介してインデックス１、２を参照する。登録処理も、リポジトリからのアクセスはプライマリサーバのみに行ない、プライマリサーバへの登録完了後に、適切なタイミングでトリガを発生し、セカンダリサーバへの登録処理を行なう。例えば、検索Ａからはインデックス１’、２’に登録する。この際、全文検索であればテキスト抽出語のプレーンテキストのみ、関連文書検索であればテキスト解析後の解析結果のみ登録すればよく、非常に軽い処理である。トリガが時間の経過や所定数の新規文書の登録等のイベントを採用できる。
【００３５】
文書検索サーバ２００または３００に障害が発生すると、これが検知され、オペレーション対象を切り替え、セカンダリサーバにアクセスする。例えば、検索Ａが故障した場合には、検索Ｂがキャビネット１、２に対する検索も行ない、検索Ｂがインデックス１’、２’を参照する。検索Ｂ（文書検索サーバ３００）は、もともと含まれるインデックス３、４に加えインデックス１’，２’もトリガのタイミングで一貫したものを保持しているため、検索は通常通り行なえる。また、障害中の登録文書を相互に保持しておくことで、登録の一貫性も維持できる。
【００３６】
障害検知は、この例では、一般的なハートビートのチェックで行なっているが、より単純にプライマリサーバに登録・検索処理を行なった際にレスポンスがないことでも判断できる。
【００３７】
図５は、この実施例における検索サービス、文書更新動作（文書登録、削除、編集等）時の検索インデックス更新（インデックスレコードの生成、削除、変更）、インデックス情報のセカンダリサーバへの転送動作等の制御例を示すものである。この例では、検索要求の有無を判断して検索要求に対して検索サービスを提供し（ステップＳ１０、Ｓ１１）、文書更新の有無を判断して文書更新に対応する検索インデックスの更新を行う（ステップＳ１２、Ｓ１３）。さらに、インデックス情報をセカンダリサーバに送信するタイミングが到来したかどうかを判別してインデックス情報をセカンダリサーバに適宜に転送する（Ｓ１４、Ｓ１５）。さらに、ハートビート信号転送タイミングが到来したかどうかを判断してハートビート信号を振り分け装置１０２に供給するようにしている（Ｓ１６、Ｓ１７）。文書検索サーバ２００または３００が故障したときにはハートビート信号が振り分け装置１０２に供給されなくなり、それに応じてプライマリサーバからセカンダリサーバへの切換が行なわれる。なお、図５の例では、文書更新に合わせて検索インデックスを更新したが、スケジュールにしたがって、更新した文書の時間スタンプ等を用いて所定時間間隔等で検索インデックスを更新しても良い。セカンダリサーバに転送して補助検索インデックス記憶部２０８、３０８に反映させるインデックス情報は例えばプライマリサーバの検索インデックス記憶部２０２にコミットしたトランザクションのログ情報であり、セカンダリサーバにおいてこれを順次にコミットすれば良い。
【００３８】
この実施例によれば、障害発生のクリティカルなタイミングを除けば、最新の一貫した情報に保たれるうえ、通常運用時の計算機リソースの無駄が少ない。また、一般的なハードウェアで実現できるため、導入コストも低く済む。
【００３９】
つぎに上述実施例の変形例について説明する。
【００４０】
上述の実施例では、構成を簡素化できるものの、障害発生直後の登録データの一貫性が完全には保たれない。このため、図６のように上位の検索レイヤの仕組みは同じにしたまま、下位のストレージレイヤはＮＡＳ／ＳＡＮ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ／Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）６００など共有可能でＲＡＩＤによる冗長性を持つようにしてもよい。これにより、ストレージに投資可能な場合はデータの一貫性を高めることができる。なお、図６において図３と対応する箇所には対応する符号を付した。また、図６において破線は故障時の動作を示す。
【００４１】
この変形例では、１のサーバが故障したときにはアクティブなサーバが、図７に破線で示すように、その代行を行い、サーバ間では管理情報をやり取りするだけでよい。
【００４２】
なお、この発明は上述実施例に限定されるものではなく、その趣旨を逸脱しない範囲で種々変更が可能である。例えば、上述例ではサーバを２つとしたが、３つ以上としても良い。
【図面の簡単な説明】
【００４３】
【図１】従来例を説明する図である。
【図２】他の従来例を説明する図である。
【図３】この発明の実施例の構成を説明する図である。
【図４】上述実施例の動作を説明する図である。
【図５】上述実施例の制御例を説明するフローチャートである。
【図６】上述実施例の変形例を説明する図である。
【図７】上述変形例の動作を説明する図である。
【符号の説明】
【００４４】
１００  文書検索システム
１０１  クライアント装置
１０２  振り分け装置
２００、３００  文書検索サーバ
２０１、３０１  インデックス生成部
２０２、３０２  検索インデックス記憶部
２０３、３０３  検索式入力部
２０４、３０４  検索部
２０５、３０５  検索結果出力部
２０６、３０６  ハートビート送信部
２０７、３０７  インデックス転送部
２０８、３０８  補助検索インデックス記憶部
４００、５００  文書群記憶部
６００  ＮＡＳ／ＳＡＮ
【図３】
2007018143.tif 000003
【図５】
2007018143.tif 000004
【図６】
2007018143.tif 000005
【図１】
2007018143.tif 000006
【図２】
2007018143.tif 000007
【図４】
2007018143.tif 000008
【図７】
2007018143.tif 000009