(57)【特許請求の範囲】
【請求項１】
それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築して、それぞれのプリセット期間が終わった後で、前記構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするステップと、
前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するステップと、
検索サービスを提供するために、前記一次インデックスセグメントセット内の前記一次インデックスセグメントまたは前記大きなインデックスセグメントセット内の前記大きなインデックスセグメントを検索デバイスに送信するステップと
を含むインデックス構築方法。
【請求項２】
前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージする前記ステップが、
前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを今度は時間系列に従って複写して、前記複写された一次インデックスセグメントを前記対応する大きなインデックスセグメントにマージするステップであって、前記対応する大きなインデックスセグメントが、前記大きなインデックスセグメントセット内にあり、かつ空メモリに隣接する大きなインデックスセグメントである、マージするステップ
を特に含む、請求項1に記載の方法。
【請求項３】
前記構築された一次インデックスセグメントを対応する大きなインデックスセグメントにマージした後で、前記方法が、
それぞれのプリセット期間ごとに、前記それぞれのプリセット期間の前に構築された一次インデックスセグメントを前記一次インデックスセグメントセットから削除するステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得する前記ステップの後に、前記方法が、
前記大きなインデックスセグメントセット内のそれぞれの大きなインデックスセグメントをバックアップするステップ
をさらに含む、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記一次インデックスセグメントおよび前記大きなインデックスセグメントのそれぞれが、連続番号値および完全であるかどうかの符号を含み、
前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージするとき、マージされた後の前記大きなインデックスセグメントの連続番号値が、マージするときの、前記一次インデックスセグメントの連続番号値および前記大きなインデックスセグメントの連続番号値のうちの、大きい方の連続番号値であり、
検索サービスを提供するために、前記一次インデックスセグメントセット内の前記一次インデックスセグメントまたは前記大きなインデックスセグメントセット内の前記大きなインデックスセグメントを検索デバイスに送信する前記ステップが、
連続番号値および完全であるかどうかの符号を搬送する、前記検索デバイスから送信されたインデックスセグメントアプリケーションを受信するステップと、
前記アプリケーション内で搬送された前記連続番号値および完全であるかどうかの前記符号に従って、前記一次インデックスセグメントセットの一次インデックスセグメントまたは前記大きなインデックスセグメントセットの大きなインデックスセグメントである対応するインデックスセグメントを前記検索デバイスに送信するステップと
を特に含む、請求項4に記載の方法。
【請求項６】
前記アプリケーション内で搬送された前記連続番号値および完全であるかどうかの前記符号に従って、対応するインデックスセグメントを前記検索デバイスに送信する前記ステップが、
前記アプリケーション内で搬送された前記連続番号値がヌルである場合、バックアップされたインデックスセグメントを読み取って、前記バックアップされたインデックスセグメントを前記検索デバイスに送信するステップと、
前記アプリケーション内で搬送された前記連続番号値が非ヌルであり、かつ前記アプリケーションが不完全であるという符号を搬送する場合、前記アプリケーション内で搬送された前記連続番号値と同じ連続番号値を有するインデックスセグメントを前記検索デバイスに送信するステップと、
前記アプリケーション内で搬送された前記連続番号値が非ヌルであり、かつ前記アプリケーションが完全であるという符号を搬送する場合、前記アプリケーション内で搬送された前記連続番号値の次の連続番号値である連続番号値を有するインデックスセグメントを前記検索デバイスに送信するステップと
を特に含む、請求項5に記載の方法。
【請求項７】
それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築して、それぞれのプリセット期間が終わった後で、前記構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするように構成された構築モジュールと、
前記構築モジュールによって取得された前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するように構成された第1のマージモジュールと、
検索サービスを提供するために、前記構築モジュールによって取得された前記一次インデックスセグメントセット内の前記一次インデックスセグメントまたは前記第1のマージモジュールによって取得された前記大きなインデックスセグメントセット内の前記大きなインデックスセグメントを検索デバイスに送信するように構成された送信モジュールと
を含むインデックス構築デバイス。
【請求項８】
前記第1のマージモジュールが、マージによって前記構築モジュールによって取得された前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを今度は時間系列に従って複写して、前記複写された一次インデックスセグメントを、前記大きなインデックスセグメントセット内の大きなインデックスセグメントであり、かつ空メモリに隣接する対応する大きなインデックスセグメントにマージするように特に構成される、請求項7に記載のデバイス。
【請求項９】
前記デバイスが、
前記構築モジュールが前記構築された一次インデックスセグメントを前記一次インデックスセグメントセットにマージした後で、それぞれのプリセット期間ごとに、前記それぞれのプリセット期間の前に構築された一次インデックスセグメントを前記一次インデックスセグメントセットから削除するように構成された削除モジュール
をさらに含む、請求項7に記載のデバイス。
【請求項１０】
前記デバイスが、
前記第1のマージモジュールが、前記構築モジュールによって取得された前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得した後で、前記大きなインデックスセグメントセット内のそれぞれの大きなインデックスセグメントをバックアップするように構成されたバックアップモジュール
をさらに含む、請求項7から9のいずれか一項に記載のデバイス。
【請求項１１】
前記構築モジュールによって構築された前記一次インデックスセグメントおよびマージによって前記第1のマージモジュールによって取得された前記大きなインデックスセグメントのそれぞれが、連続番号値および完全であるかどうかの符号を含み、
前記第1のマージモジュールが前記構築モジュールによって取得された前記一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、前記複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージするとき、マージされた後の前記大きなインデックスセグメントの連続番号値が、マージするときの前記一次インデックスセグメントの連続番号値および前記大きなインデックスセグメントの連続番号値のうちの、大きい方の連続番号値であり、
送信モジュールが、
連続番号値および完全であるかどうかの符号を搬送する、前記検索デバイスから送信されたインデックスセグメントアプリケーションを受信するように構成された第1の受信ユニットと、
前記第1の受信ユニットによって受信された前記アプリケーション内で搬送された前記連続番号値および完全であるかどうかの前記符号に従って、前記一次インデックスセグメントセットの一次インデックスセグメントまたは前記大きなインデックスセグメントセットの大きなインデックスセグメントである対応するインデックスセグメントを前記検索デバイスに送信するように構成された第1の送信ユニットと
を特に含む、請求項10に記載のデバイス。
【請求項１２】
前記第1の受信ユニットによって受信された前記アプリケーション内で搬送された前記連続番号値がヌルである場合、バックアップされたインデックスセグメントを読み取って、前記バックアップされたインデックスセグメントを前記検索デバイスに送信し、前記第1の受信ユニットによって受信された前記アプリケーション内で搬送された前記連続番号値が非ヌルであり、かつ前記アプリケーションが不完全であるという符号を搬送する場合、前記アプリケーション内で搬送された前記連続番号値と同じ連続番号値を有するインデックスセグメントを前記検索デバイスに送信し、前記第1の受信ユニットによって受信された前記アプリケーション内で搬送された前記連続番号値が非ヌルであり、かつ前記アプリケーションが完全であるという符号を搬送する場合、前記アプリケーション内で搬送された前記連続番号値の次の連続番号値である連続番号値を有するインデックスセグメントを前記検索デバイスに送信するように前記第1の送信ユニットが特に構成される、請求項11に記載のデバイス。
【請求項１３】
それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得して、前記取得された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするステップと、
前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、前記複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するステップと、
前記第1のレベルのインデックスセグメントセット内の前記第1のレベルのインデックスセグメントおよび前記第2のレベルのインデックスセグメントセット内の前記第2のレベルのインデックスセグメントに従って、検索サービスを提供するステップと
を含む検索方法。
【請求項１４】
前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、前記複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージする前記ステップが、
前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを今度は時間系列に従って複写して、前記複写された第1のレベルのインデックスセグメントを、前記第2のレベルのインデックスセグメントセット内にあり、かつ空メモリに隣接する第2のレベルのインデックスセグメントである対応する第2のレベルのインデックスセグメントにマージするステップ
を特に含む、請求項13に記載の方法。
【請求項１５】
前記第1のレベルのインデックスセグメントおよび前記第2のレベルのインデックスセグメントのそれぞれが、連続番号値および完全であるかどうかの符号を含み、
それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得する前記ステップが、
それぞれのプリセット期間ごとに、連続番号値および完全であるかどうかの符号を搬送するインデックスセグメントアプリケーションを前記インデックス構築デバイスに送信するステップであって、前記連続番号値が、既に存在したインデックスセグメントの連続番号値のうちの最大連続番号値であるか、またはヌルである、送信するステップと、
前記連続番号値および完全であるかどうかの前記符号に従って前記インデックス構築デバイスによって送信された前記インデックスセグメントを受信して、前記受信されたインデックスセグメントを第1のレベルのインデックスセグメントと見なすステップと
を特に含み、
前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、前記複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするとき、マージされた後の前記第2のレベルのインデックスセグメントの連続番号値が、マージするときの前記第1のレベルのインデックスセグメントの連続番号値および前記第2のレベルのインデックスセグメントの連続番号値のうちの、大きい方の連続番号値である、請求項13または14に記載の方法。
【請求項１６】
それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得して、前記取得された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするように構成された取得モジュールと、
前記取得モジュールによって取得された前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、前記複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するように構成された第2のマージモジュールと、
前記取得モジュールによって取得された前記第1のレベルのインデックスセグメントセット内の前記第1のレベルのインデックスセグメントおよび前記第2のマージモジュールによって取得された前記第2のレベルのインデックスセグメントセット内の前記第2のレベルのインデックスセグメントに従って、検索サービスを提供するように構成された検索モジュールと
を含む検索デバイス。
【請求項１７】
前記第2のマージモジュールが、前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを今度は時間系列に従って複写して、前記複写された第1のレベルのインデックスセグメントを、前記第2のレベルのインデックスセグメントセット内にあり、かつ空メモリに隣接する第2のレベルのインデックスセグメントである対応する第2のレベルのインデックスセグメントにマージするように特に構成される、請求項16に記載のデバイス。
【請求項１８】
前記取得モジュールによって取得された前記第1のレベルのインデックスセグメントおよび前記第2のマージモジュールによって取得された前記第2のレベルのインデックスセグメントのそれぞれが、連続番号値および完全であるかどうかの符号を含み、
前記取得モジュールが、
それぞれのプリセット期間ごとに、連続番号値および完全であるかどうかの符号を搬送するインデックスセグメントアプリケーションを前記インデックス構築デバイスに送信するように構成された第2の送信ユニットと、
前記第2の送信ユニットによって送信された前記連続番号値および完全であるかどうかの前記符号に従って前記インデックス構築デバイスによって送信された前記インデックスセグメントを受信して、前記受信されたインデックスセグメントを第1のレベルのインデックスセグメントと見なして、前記第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするように構成された第2の受信ユニットと
を特に含み、
前記第2のマージモジュールが、前記取得モジュールによって取得された前記第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、前記複写された第1のレベルのインデックスセグメントを前記対応する第2のレベルのインデックスセグメントにマージするとき、マージされた後の前記第2のレベルのインデックスセグメントの連続番号値が、マージするときの前記第1のレベルのインデックスセグメントの連続番号値および前記第2のレベルのインデックスセグメントの連続番号値のうちの、大きい方の連続番号値である、請求項16または17に記載のデバイス。
【請求項１９】
1個のインデックス構築デバイスおよび2個以上の検索デバイスを含む検索システムであって、
前記インデックス構築デバイスが、請求項7から12のいずれか一項に記載のインデックス構築デバイスであり、
前記検索デバイスが、請求項16から18のいずれか一項に記載の検索デバイスである、検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により組み込まれている「index constructing method, search method, device and system」という表題の、2011年7月21日に出願した、中国特許出願第201110204879.8号からの優先権の利益を主張するものである。
【０００２】
本開示は、検索技術に関し、より詳細には、インデックス構築方法、検索方法、検索デバイス、および検索システムに関する。
【背景技術】
【０００３】
ネットワークの需要と増大する情報量とにより、検索技術の適用範囲はますます広がっている。検索を達成するために、データを事前にインデックスに構築し、次いで、事前に構築されたインデックスに従って検索を実行することが必要である。したがって、インデックスを構築する様式が検索速度を決める場合がある。
【０００４】
関連技術において、インデックスを構築する1つの様式は、ファイルサイズに従って、1個の大きなインデックスセグメントと1個の小さなインデックスセグメントとを含む2個のインデックスセグメントを確立して、新しいデータを小さなインデックスセグメント内にリアルタイムでマージ(merge)し、ある時点で、大きなインデックスセグメントと小さなインデックスセグメントとを新しい大きなインデックスセグメントにマージすることである。検索の間、大きなインデックスセグメントと小さなインデックスセグメントとが同時に検索され、次いで、大きなインデックスセグメントと小さなインデックスセグメントの両方の検索の結果がマージされる。
【０００５】
本開示の実装のプロセスにおいて、発明者らは、関連技術は少なくとも以下の不利点を有することを見出した。
【０００６】
関連技術では、検索サービスを提供する前に、新しいデータと小さなインデックスセグメントとをマージし、次いで、小さなインデックスセグメントと大きなインデックスセグメントとをマージすることが必要とされるため、検索速度が影響を受ける。
【発明の概要】
【課題を解決するための手段】
【０００７】
検索速度を改善するために、本開示の一例は、インデックス構築方法、検索方法、検索デバイス、および検索システムを提供する。この技術的解決策は以下の通りである。
【０００８】
一方で、インデックス構築方法が提供され、この方法は、
それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築して、それぞれのプリセット期間が終わった後で、構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするステップと、
一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するステップと、
検索サービスを提供するために、一次インデックスセグメントセット内の一次インデックスセグメントまたは大きなインデックスセグメントセット内の大きなインデックスセグメントを検索デバイスに送信するステップと
を含む。
【０００９】
インデックス構築デバイスがやはり提供され、
それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築して、それぞれのプリセット期間が終わった後で、構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするように構成された構築モジュールと、
構築モジュールによって取得された一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するように構成された第1のマージモジュールと、
検索サービスを提供するために、構築モジュールによって取得された一次インデックスセグメントセット内の一次インデックスセグメントまたは第1のマージモジュールによって取得された大きなインデックスセグメントセット内の大きなインデックスセグメントを検索デバイスに送信するように構成された送信モジュールと
を含む。
【００１０】
他方で、検索方法がやはり提供され、
それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得して、取得された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするステップと、
第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するステップと、
第1のレベルのインデックスセグメントセット内の第1のレベルのインデックスセグメントと第2のレベルのインデックスセグメントセット内の第2のレベルのインデックスセグメントとに従って、検索サービスを提供するステップと
を含む。
【００１１】
検索デバイスがやはり提供され、
それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得して、取得された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするように構成された取得モジュールと、
取得モジュールによって取得された第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するように構成された第2のマージモジュールと、
取得モジュールによって取得された第1のレベルのインデックスセグメントセット内の第1のレベルのインデックスセグメントと第2のマージモジュールによって取得された第2のレベルのインデックスセグメントセット内の第2のレベルのインデックスセグメントとに従って、検索サービスを提供するように構成された検索モジュールと
を含む。
【００１２】
他方で、検索システムがやはり提供され、1個のインデックス構築デバイスと2個以上の検索デバイスとを含み、
インデックス構築デバイスは上記のインデックス構築デバイスであり、
検索デバイスは上記の検索デバイスである。
【００１３】
本開示の実施形態で提供される技術的解決策の有益な効果は、以下を含む。
【００１４】
上述のように、関連技術では、検索サービスを提供する前に、新しいデータと小さなインデックスセグメントとをマージし、次いで、小さなインデックスセグメントと大きなインデックスセグメントとをマージすることが必要とされるため、検索速度が影響を受けるのに対して、本開示の実施形態で提供される技術的解決策を導入した後で、一次インデックスセグメントを時間に基づいて構築して、構築された一次インデックスセグメントを大きなインデックスセグメントにマージするステップと、検索サービスに一次インデックスセグメントまたは大きなインデックスセグメント、すなわち、既に構築された一次インデックスセグメントまたは大きなインデックスセグメントを同時に提供するステップとを使用して、インデックスの構築時に検索サービスを提供することが可能であり、インデックスを構築するための1つのスレッドおよび検索するための1つのスレッドが並行して実行され、それによって、検索速度を改善する。
【００１５】
当業者に対して本開示の上記のおよびその他の特徴ならびに利点をより明瞭にするために、添付の図面を参照して、本開示の例示的な実施例が詳細に説明される。
【図面の簡単な説明】
【００１６】
【図１】本開示の第1の実施例によるインデックス構築方法の流れ図である。
【図２】本開示の第2の実施例によるインデックス構築方法の流れ図である。
【図３】本開示の第2の実施例による、インデックスセグメントをマージするステップの概略図である。
【図４】本開示の第2の実施例による、インデックスを構築するプロセスを示す概略図である。
【図５】本開示の第3の実施例によるインデックス構築デバイスの第1の概略図である。
【図６】本開示の第3の実施例によるインデックス構築デバイスの第2の概略図である。
【図７】本開示の第3の実施例によるインデックス構築デバイスの第3の概略図である。
【図８】本開示の第3の実施例による送信ジュールの概略図である。
【図９】本開示の第4の実施例による検索方法の流れ図である。
【図１０】本開示の第5の実施例による検索方法の流れ図である。
【図１１】本開示の第5の実施例による検索するステップの概略図である。
【図１２】本開示の第6の実施例による検索デバイスの概略図である。
【図１３】本開示の第6の実施例による取得モジュールの概略図である。
【図１４】本開示の第7の実施例による検索システムの概略図である。
【図１５】本開示の第7の実施例による別の検索システムの概略図である。
【発明を実施するための形態】
【００１７】
本開示の目的、技術的解決策、および利点をより明瞭にするために、添付の図面を参照して、本開示の様々な実施例が詳細に説明される。
【実施例１】
【００１８】
この実施例はインデックス構築方法を提供する。図1を参照すると、この実施例で提供される方法の流れは、詳細には、以下の通りである。
101:それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築して、それぞれのプリセット期間が終わった後で、構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするステップ、
102:一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するステップ、および
103:検索サービスを提供するために、一次インデックスセグメントセット内の一次インデックスセグメントまたは大きなインデックスセグメントセット内の大きなインデックスセグメントを検索デバイスに送信するステップ。
【００１９】
この実施例で提供される方法を明瞭に例示するために、この実施例で提供される方法は、以下で、第2の実施例の特定の内容を参照してさらに説明される。詳細は、以下の第2の実施例の内容を参照する。
【実施例２】
【００２０】
この実施例はインデックス構築方法を提供する。図2を参照すると、この実施例で提供される方法の流れは、詳細には、以下の通りである。
201:それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築するステップ。
【００２１】
このステップでは、この実施例はプリセット期間のサイズを限定しない。説明の便宜上、この実施例は、5分であるプリセット期間のサイズだけを例にとり、その場合、この実施例で提供される方法は、5分ごとに取得されたデータを一次インデックスセグメントにそれぞれ構築する。データをインデックスセグメントに構築することは、既に非常に成熟した既存の技術であるため、取得されたデータを一次インデックスセグメントに構築する様式は、この実施例において、ここで詳細に説明および限定されない。
【００２２】
詳細には、構築された一次インデックスセグメントは、データの複数の独立したインデックス構造を含み、これらの独立したインデックス構造は、転置インデックスと、削除テーブルと、文書基礎情報およびカスタマイズされたその他の情報とを含むが、これらに限定されない。転置インデックス内のインデックステーブル内のそれぞれの項目は、属性値とその属性値を有するそれぞれの記録のアドレスとを含む。これらの記録によって属性値を判断するのではなく、その属性値によってこれらの記録の位置を判断し、これは転置インデックスと呼ばれる。転置インデックスのインデックスオブジェクトは、文書内または文書のセット内の語などである。転置インデックスは、文書内または文書のセット内の語の記憶位置を記憶するために使用され、文書または文書のセットの共通のインデックス機構である。それぞれの文書はその独自の文書idを有し、これにより、異なる文書を区別することができる。文書基礎情報の特定の内容に関して、この実施例では詳細に限定されない。この実施例では、インデックスセグメント内に既に存在する情報を使用して、適切な高速のメモリデータ構造を構築するために、この実施例では、構築された一次インデックスセグメントを初期化する1つの方法が挙げられ、初期化後の一次インデックスセグメントのデータ構造は以下のTable 1(表1)に示される。
【００２３】
【表１】
0005823037.tif 000002
【００２４】
Table 1(表1)では、キーワードから転置インデックスへのマッピングテーブルであれ、文書idから文書基礎情報へのマッピングテーブルであれ、それぞれのマッピングテーブルは、ハッシュアレイと衝突リストとから構成され、ハッシュアレイおよび衝突リストは密なアレイ構造を形成する。初期化の間、マッピングテーブルとしてデータを直接的に利用することができる。
【００２５】
202:それぞれのプリセット期間が終わった後で、構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするステップ。
【００２６】
このステップでは、5分であるプリセット期間を依然として例にとると、その場合、5分ごとに、すべての取得されたデータを一次インデックスセグメントに構築することができ、5分に達した後で、一次インデックスセグメントが一次インデックスセグメントセットにマージされる。一次インデックスセグメントセットは、複数の5分内に構築された一次インデックスセグメントを含む。
【００２７】
好ましくは、この実施例で提供される方法は、一次インデックスセグメントセット内の一次インデックスセグメントを対応する大きなインデックスセグメントセットにマージすることになるため、メモリリソースを節約するために、構築された一次インデックスセグメントを一次インデックスセグメントセットにマージした後で、この実施例で提供される方法は、さらに以下を含む。
それぞれのプリセット期間ごとに、そのそれぞれのプリセット期間の前に構築された一次インデックスセグメントを一次インデックスセグメントセットから削除するステップ。
【００２８】
この実施例は、それぞれのプリセット期間内に、削除されることになる一次インデックスセグメントが大きなインデックスセグメントセットに既にマージされていることを確実にできる限り、プリセット期間の特定サイズを限定しない。
【００２９】
203:一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するステップ。
【００３０】
詳細には、図3は、一次インデックスセグメントを構築して、一次インデックスセグメントを一次インデックスセグメントセットにマージして、一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、対応する大きなインデックスセグメントにマージするプロセス全体を示す。
【００３１】
一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージするとき、一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを今度は時間系列に従って複写することができ、複写された一次インデックスセグメントは対応する大きなインデックスセグメントにマージされる。この対応する大きなインデックスセグメントは、大きなインデックスセグメントセット内にあり、かつ空メモリに隣接する大きなインデックスセグメントである。
【００３２】
理解を促すために、この実施例において、このステップのマージ様式は、図4に示されるマージプロセスを参照して詳細に説明される。特定の実現の際に、この実施例で提供される方法は、メモリの連続的なチャンクを事前に割り振り、このメモリは複数の大きなインデックスセグメントと空メモリ領域とを記憶する。マージのために空メモリ領域に隣接する大きなインデックスセグメントを選択するたびに、その空メモリ領域に隣接し、かつその空メモリ領域の上部に位置する1個の大きなインデックスセグメントを選択することができ、その空メモリ領域に隣接し、かつその空メモリ領域の下部に位置する1個の大きなインデックスセグメントを選択することもできる。その空メモリ領域の上部および下部に大きなインデックスセグメントが存在しない場合、一次インデックスセグメントは空メモリに直接的にマージされる。図4aを参照すると、この実施例では、ある例として、空メモリ領域に隣接し、かつその空メモリ領域の上部に位置し、大きなインデックスセグメントセットから選択された1個の大きなインデックスセグメントは、大きなインデックスセグメント4である。マージされる必要がある1個の一次インデックスセグメントは対応する大きなインデックスセグメント4にマージされることになる。一次インデックスセグメントを対応する大きなインデックスセグメント4にマージすることを選択した後で、マージにより1個の新しい大きなインデックスセグメント4が取得される。一次インデックスセグメントの後続のマージの際、図4(b)を参照すると、最後の選択様式に従って、空メモリ領域に隣接し、かつその空メモリ領域の上部に位置する、1個の選択された大きなインデックスセグメントは大きなインデックスセグメント3であり、マージの後で取得された大きなインデックスセグメントセットが図4(b)に示される。
【００３３】
一次インデックスセグメントを対応する大きなインデックスセグメントにマージするとき、図3および上で議論された内容と組み合わせて、一次インデックスセグメントを空メモリに隣接する大きなインデックスセグメントにマージする方法が導入されるため、この実施例で提供されるマージ様式は連続的な空メモリ、すなわち、メモリ内に空隙が存在しないことを確実にでき、それによって、メモリの利用率を改善することがわかる。さらに、この例で提供されるマージ様式では、マージされる必要がある大きなインデックスセグメントと一次インデックスセグメントとの間に交差は存在せず、したがって、マージが完了する前に、この大きなインデックスセグメントおよび一次インデックスセグメントは、依然として、検索サービスを提供し続けることが可能である。
【００３４】
好ましくは、一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得した後で、この実施例で提供される方法は、大きなインデックスセグメントセット内のそれぞれの大きなインデックスセグメントをバックアップするステップをさらに含む。特定のバックアップモードに関して、この実施例はそのモードに何の特定の限定も課さない。実際の適用例では、取得された大きなインデックスセグメントセット内のそれぞれの大きなインデックスセグメントをローカルディスク内にバックアップすることが可能である。
【００３５】
204:検索サービスを提供するために、一次インデックスセグメントセット内の一次インデックスセグメントまたは大きなインデックスセグメントセット内の大きなインデックスセグメントを検索デバイスに送信するステップ。
【００３６】
このステップでは、この実施例で提供される方法でインデックスセグメントを構築するとき、構築されたインデックスセグメントは、共通の転置インデックス、削除テーブル、文書基礎情報およびその他の情報に加えて、seqno(連続番号)値、および完全であるかどうかのIsComplete符号を少なくともさらに含む。seqno値は、構築された異なるインデックスセグメントを区別するように構成される。この実施例は、連続番号値のサイズを限定しない。64ビット整数であるseqno値を例にとると、それぞれの構築された一次インデックスセグメントに関して、それぞれの構築された一次インデックスセグメントのseqno値は、1から始めて漸進的に狭義単調増加する。この例は漸進的に増加する率を限定しない。ある例として、毎回1を加算することによってseqno値を漸進的に増加することができる。新しい一次インデックスセグメントが構築されるたびに、新しいseqno値がその新しい一次インデックスセグメントに割り振られる。大きなインデックスセグメントと一次インデックスセグメントとが新しい大きなインデックスセグメントにマージされるとき、新しい大きなインデックスセグメントのseqno値は、大きなインデックスセグメントのseqno値および一次インデックスセグメントのseqno値のうち、大きい方のseqno値に等しい。IsComplete符号は、1個のインデックスセグメントが完全であるかどうかを指す。この実施例では、1個の一次インデックスセグメントに関して、一次インデックスセグメントが一次インデックスセグメントセットにマージされた後で、この一次インデックスセグメントは完全になり、すなわち、この一次インデックスセグメントは、5分内のすべてのデータを含む。プリセット期間に達しない場合、1個の一次インデックスセグメントは、その後、データを取得し続けることができ、これは、現在構築されている一次インデックスセグメントは5分内のすべてのデータを含まないことを意味し、したがって、この一次インデックスセグメントは完全ではない。それぞれの大きなインデックスセグメントに関して、それぞれの大きなインデックスセグメントは完全な一次インデックスセグメントをマージすることによって取得されるため、それぞれの大きなインデックスセグメントは完全である。好ましく
は、インデックスデータを検査するために、1個のインデックスセグメントは、md5検査値をさらに含むことが可能である。md5検査値は、インデックスセグメントのすべてのバイトのmd5値を指す。
【００３７】
一次セグメント内に含まれる上記の情報と組み合わせて、検索サービスを提供するために、一次インデックスセグメントセット内の一次インデックスセグメントまたは大きなインデックスセグメントセット内の大きなインデックスセグメントを検索デバイスに送信するとき、この実施例で提供される方法は、
連続番号および完全であるかどうかの符号を搬送する、検索デバイスから送信されたインデックスセグメントアプリケーションを受信するステップと、
アプリケーション内で搬送された連続番号および完全であるかどうかの符号に従って、一次インデックスセグメントセットの一次インデックスセグメントまたは大きなインデックスセグメントセットの大きなインデックスセグメントである、対応するインデックスセグメントを検索デバイスに送信するステップと
を特に含む。
【００３８】
検索デバイスがインデックスアプリケーションを送信する理由は、検索デバイス自体の中に既にあるインデックスセグメントを更新するように、新しく構築されたインデックスセグメントを取得するためであり、したがって、検索デバイスから送信されたアプリケーション内で搬送された連続番号値は、検索デバイス内に既にあるインデックスセグメントの連続番号値の最大連続番号値である。初始動、再始動、障害などの理由により、検索デバイスが何のインデックスセグメントも有さない状況では、検索デバイスがインデックスセグメントアプリケーションを送信するとき、アプリケーション内で搬送される連続番号値はヌルに設定される。連続番号値がヌルである状況は、実施例5のステップ1001に示される検索方法を紹介するときに詳細に説明される。
【００３９】
さらに、アプリケーション内で搬送された連続番号および完全であるかどうかの符号に従って、対応するインデックスセグメントを検索デバイスに送信するステップは、
アプリケーション内で搬送された連続番号値がヌルである場合、バックアップされたインデックスセグメントを読み取って、バックアップされたインデックスセグメントを検索デバイスに送信するステップ、
または、アプリケーション内で搬送された連続番号値が非ヌルであり、かつアプリケーションが不完全であるという符号を搬送する場合、アプリケーション内で搬送された連続番号値と同じ連続番号値を有するインデックスセグメントを検索デバイスに送信するステップ、
または、アプリケーション内で搬送された連続番号値が非ヌルであり、かつアプリケーションが完全であるという符号を搬送する場合、アプリケーション内で搬送された連続番号値の次の連続番号値である連続番号値を有するインデックスセグメントを検索デバイスに送信するステップ
を特に含む。
【００４０】
この実施例で提供される方法では、複数の一次インデックスセグメントを時間に基づいて構築するステップと、構築された一次インデックスセグメントを大きなインデックスセグメントにマージするステップと、検索サービスに一次インデックスセグメントまたは大きなインデックスセグメントを同時に提供するステップとにより、検索速度を改善することができる。インデックスセグメントをマージするとき、インデックスセグメントは、好ましくは、空メモリ領域に隣接するインデックスセグメントにマージされ、それによって、メモリの利用率を改善する。さらに、一次インデックスセグメントを構築するとき、適切な高速メモリデータ構造を構築するように、インデックスセグメント内の既存のデータを使用して、インデックスセグメントを初期化することができ、それによって、検索速度をさらに改善することができる。
【実施例３】
【００４１】
この実施例は、上記の実施例2のインデックス構築方法を実行するために使用可能なインデックス構築デバイスを提供する。図5を参照すると、インデックス構築デバイスは、
それぞれのプリセット期間内で取得されたデータを一次インデックスセグメントにそれぞれ構築して、それぞれのプリセット期間が終わった後で、構築された一次インデックスセグメントを一次インデックスセグメントセットにマージするように構成された構築モジュール501と、
構築モジュール501によって取得された一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得するように構成された第1のマージモジュール502と、
検索サービスを提供するために、構築モジュール501によって取得された一次インデックスセグメントセット内の一次インデックスセグメントまたは第1のマージモジュール502によって取得された大きなインデックスセグメントセット内の大きなインデックスセグメントを検索デバイスに送信するように構成された送信モジュール503と
を含む。
【００４２】
詳細には、第1のマージモジュール502は、構築モジュール501によって取得された一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを今度は時間系列に従って複写して、複写された一次インデックスセグメントを、大きなインデックスセグメントセット内の大きなインデックスセグメントであり、かつ空メモリに隣接する対応する大きなインデックスセグメントにマージするように特に構成される。
【００４３】
好ましくは、図6を参照すると、このデバイスは、
構築モジュール501が構築された一次インデックスセグメントを一次インデックスセグメントセットにマージした後で、それぞれのプリセット期間ごとに、そのそれぞれのプリセット期間の前に構築された一次インデックスセグメントを一次インデックスセグメントセットから削除するように構成された削除モジュール504
をさらに含む。
【００４４】
好ましくは、図7を参照すると、このデバイスは、
第1のマージモジュール502が、構築モジュール501によって取得された一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージして、大きなインデックスセグメントセットを取得した後で、大きなインデックスセグメントセット内のそれぞれの大きなインデックスセグメントをバックアップするように構成されたバックアップモジュール505
をさらに含む。
【００４５】
構築モジュール501によって構築された一次インデックスセグメントおよびマージによって第1のマージモジュール502によって取得された大きなインデックスセグメントのそれぞれは、連続番号値および完全であるかどうかの符号を含み、
したがって、第1のマージモジュール502が構築モジュール501によって取得された一次インデックスセグメントセット内のそれぞれの一次インデックスセグメントを複写して、複写された一次インデックスセグメントを対応する大きなインデックスセグメントにマージするとき、マージされた後の大きなインデックスセグメントの連続番号値は、マージするときの一次インデックスセグメントの連続番号値および大きなインデックスセグメントの連続番号値のうち、大きい方の連続番号値であり、
したがって、図8を参照すると、送信モジュール503は、
連続番号値および完全であるかどうかの符号を搬送する、検索デバイスから送信されたインデックスセグメントアプリケーションを受信するように構成された第1の受信ユニット503aと、
第1の受信ユニット503aによって受信されたアプリケーション内で搬送された連続番号値および完全であるかどうかの符号に従って、一次インデックスセグメントセットの一次インデックスセグメントまたは大きなインデックスセグメントセットの大きなインデックスセグメントである対応するインデックスセグメントを検索デバイスに送信するように構成された第1の送信ユニット503bと
を特に含む。
【００４６】
さらに、第1の送信ユニット503bは、第1の受信ユニット503aによって受信されたアプリケーション内で搬送された連続番号がヌルである場合、バックアップされたインデックスセグメントを読み取って、バックアップされたインデックスセグメントを検索デバイスに送信し、または第1の受信ユニット503aによって受信されたアプリケーション内で搬送された連続番号値が非ヌルであり、かつアプリケーションが不完全であるという符号を搬送する場合、アプリケーション内で搬送された連続番号値と同じ連続番号値を有するインデックスセグメントを検索デバイスに送信し、または第1の受信ユニット503aによって受信されたアプリケーション内で搬送された連続番号値が非ヌルであり、かつアプリケーションが完全であるという符号を搬送する場合、アプリケーション内で搬送された連続番号値の次の連続番号値である連続番号値を有するインデックスセグメントを検索デバイスに送信するように特に構成される。
【００４７】
この実施例で提供されるデバイスでは、複数の一次インデックスセグメントを時間に基づいて構築することと、構築された一次インデックスセグメントを大きなインデックスセグメントにマージすることと、検索サービスに一次インデックスセグメントまたは大きなインデックスセグメントを同時に提供することとにより、検索速度を改善することができる。さらに、インデックスセグメントをマージするとき、インデックスセグメントは、好ましくは、空メモリ領域に隣接するインデックスセグメントにマージされ、それによって、メモリの利用率を改善する。
【実施例４】
【００４８】
この実施例は検索方法を提供し、図9を参照すると、この実施例で提供される検索方法流れ図は、詳細には、以下の通りである。
901:それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得して、取得された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするステップ、
902:第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、複写された第1のレベルのインデクスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するステップ、および
903:第1のレベルのインデックスセグメントセット内の第1のレベルのインデックスセグメントと第2のレベルのインデックスセグメントセット内の第2のレベルのインデックスセグメントとに従って、検索サービスを提供するステップ。
【００４９】
この実施例で提供される方法をより良好に説明するために、この実施例で提供される方法は、以下で、実施例5の特定の内容を参照して詳細に説明される。
【実施例５】
【００５０】
この実施例は検索方法を提供し、図10を参照すると、この実施例で提供される検索方法の流れ図は詳細には、以下の通りである。
1001:それぞれのプリセット期間ごとに、連続番号値および完全であるかどうかの符号を搬送するインデックスセグメントアプリケーションをインデックス構築デバイスに送信するステップ。
【００５１】
このステップでは、検索結果の精度を確実にするように、既に存在したインデックスセグメントをリアルタイムで更新するために、インデックス構築デバイスからインデックスセグメントを取得し続けることが必要とされ、したがって、プリセット期間を数秒または数分に設定することができる。この実施例は、プリセット期間のサイズを特に限定しない。
【００５２】
さらに、インデックス構築デバイスから必要とされるインデックスセグメントを取得することが可能であるために、それぞれのプリセット期間ごとに、検索デバイスは、連続番号値および完全であるかどうかの符号を搬送するインデックスセグメントアプリケーションをインデックス構築デバイスに送信する。検索に使用されたインデックスセグメントを更新するように、インデックス構築デバイスによって構築された新しいインデックスセグメントを取得するために、このステップでインデックスセグメントアプリケーションを送信するとき、アプリケーション内で搬送される連続番号値は、検索デバイス内に既に存在したインデックスセグメントの連続番号値のうちの最大連続番号である。
【００５３】
初始動、再始動、障害などの理由で、検索デバイスが何のインデックスセグメントも有さない状況の場合、このステップでインデックスセグメントアプリケーションを送信するとき、アプリケーション内で搬送された連続番号値はヌルであると判断される。判断様式は、以下の2つの異なる状況に従って別個で処理されうる。
【００５４】
第1の状況。(初期展開、クラッシュ、および停電など)様々な理由で検索デバイスが再始動した後で、検索デバイスが何のインデックスセグメントも有さない。
【００５５】
この状況では、検索デバイスがインデックスセグメントアプリケーションをインデックス構築デバイスに送信するとき、アプリケーション内で搬送されるseqno値はヌルに設定される。インデックス構築デバイスがその連続番号値がヌルであるインデックスセグメントアプリケーションを受信した後、インデックス構築デバイスは、ディスクから読み取られたもっとも最近のバックアップデータを送信する。ある例として、インデックス構築デバイスは、1時間に一度、大きなインデックスセグメントをバックアップして、2時間に一度、一次インデックスセグメントセット内の一次インデックスセグメントを削除し、次いで、次にインデックスセグメントを適用するとき、新しいインデックスセグメントは一次インデックスセグメントセット内にある。
【００５６】
第2の状況。作業環境が正常な状況範囲外(out-of-state)である(例えば、ネットワークを30分連続して使用できない)とき、検索デバイスは、長期間にわたってインデックス構築デバイスと通信することができず、検索の間に検索デバイスによって使用されるインデックスセグメントとインデックス構築デバイスによって構築されるインデックスセグメントとの間に大きな違いが存在する。
【００５７】
この状況では、ある例として、インデックス構築デバイスは1時間に一度、大きなインデックスセグメントをバックアップして、2時間に一度、一次インデックスセグメントセット内の一次インデックスセグメントを削除する。このステップでインデックスセグメントアプリケーションをインデックス構築デバイスに送信するとき、アプリケーション内で搬送される連続番号値が、依然として、検索デバイス内に既に存在したインデックスセグメントの連続番号値のうちの最大連続番号値である場合、インデックス構築デバイスがアプリケーション内で搬送された連続番号値を受信した後で、検索デバイスが連続番号値に対応するインデックスセグメントを見出して、その連続番号値に対応するインデックスセグメントの構築の際の時間の空白が2時間以内である(すなわち、2時間以内ネットワークを停止する)と判断した場合、(検索デバイスの第1のレベルのインデックスセグメントセットは2時間の第1のレベルのインデックスセグメントを含むため)通常のプロセスが依然として実行され、その連続番号値に対応するインデックスセグメントの構築の際の時間の空白が2時間を超える(すなわち、2時間を超過してネットワークを停止する)と判断した場合、インデックス構築デバイスは、現在のインデックスセグメントを空にして、第1の状況の処理様式に従って実行するように検索デバイスに通知するように、検索デバイスに対してエラー通知を発行することができる。この例は、インデックス構築デバイスが通知メッセージを検索デバイスに送信する様式を限定しない。この状況の場合、他の処理様式を導入することが可能であり、検索デバイスが障害を送信した後で、検索デバイスがインデックス構築デバイスによって構築されたインデックスセグメントを取得することができることを確実にできる限り、この例は他の処理様式を特に限定しない。
【００５８】
上記の実施例2から、それぞれのインデックスセグメントは連続番号値および完全であるかどうかの符号を含むため、インデックス構築デバイスが連続番号値および完全であるかどうかの符号を搬送するアプリケーションを受信するとき、インデックス構築デバイスはどのインデックスセグメントを送信するかを判断することができることが分かる。インデックス構築デバイスがインデックスセグメントを送信する様式は、上記の実施例2のステップ201の関連する記載を参照し、ここで繰り返されない。
【００５９】
1002:アプリケーション内で搬送された連続番号値および完全であるかどうかの符号に従ってインデックス構築デバイスから送信されたインデックスセグメントを受信して、受信されたインデックスセグメントを第1のレベルのインデックスセグメントと見なして、第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするステップ。
【００６０】
このステップでは、実際の実装において、受信された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするとき、受信された第1のレベルのインデックスセグメントは、受信された順序に従って第1のレベルのインデックスセグメントセット内に順番に配列可能である。受信された第1のレベルのインデックスセグメントが不完全のインデックスセグメントである場合、この受信された第1のレベルのインデックスセグメントは、第1のレベルのインデックスセグメントセット内の最後のインデックスセグメントとして直接的に配列される。受信された第1のレベルのインデックスセグメントが完全なインデックスセグメントである場合、この受信された第1のレベルのインデックスセグメントは、第1のレベルのインデックスセグメントセット内の最後のインデックスセグメントをカバーする。受信された第1のレベルのインデックスセグメントが完全であるかどうかをどのように判断するかについては、第1のレベルのインデックスセグメント内に含まれた、完全であるかどうかの符号によって得ることができる。
【００６１】
上記のステップ1001および1002は実施例4のステップ901を示すための例である点に留意されたい。実際の適用例では、ステップ901のそれぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得するステップを達成するために、他の様式を導入することが可能である。この実施例は特に様式を限定しない。
【００６２】
1003:第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するステップ。
【００６３】
このステップに関して、第1のレベルのインデックスセグメントと第2のレベルのインデックスセグメントとをマージする1つのプロセスを図11に示すことができる。マージ原理は、実施例2のステップ203で、一次インデックスセグメントと大きなインデックスセグメントとをマージする原理と同じであり、すなわち、第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを今度は時間系列に従って複写することができ、複写された第1のレベルのインデックスセグメントは対応する第2のレベルのインデックスセグメントにマージされる。対応する第2のレベルのインデックスセグメントは、第2のレベルのインデックスセグメントセット内にあり、かつ空メモリに隣接する第2のレベルのインデックスセグメントである。マージされた後の第2のレベルのインデックスセグメントの連続番号値は、マージするときの第1のレベルのインデックスセグメントの連続番号値および第2のレベルのインデックスセグメントの連続番号値のうち、大きい方の連続番号値である。
【００６４】
1004:第1のレベルのインデックスセグメントセット内の第1のレベルのインデックスセグメントと第2のレベルのインデックスセグメントセット内の第2のレベルのインデックスセグメントとに従って、検索サービスを提供するステップ。
【００６５】
この実施例で提供される検索方法の場合、実際の適用例では、1つのプリセット期間内に構築された完全な一次インデックスセグメントと大きなインデックスセグメントとをマージする時間はそのプリセット期間未満であり、したがって、インデックスの検索および構築は完全に同期化される。インデックスに構築されるときから検索可能になるときまでのデータの総合遅延を計算するための公式は、
T=Tinsert_to_segment+Tcopy_segment+Treload_segment
である。
【００６６】
式中、Tinsert_to_segmentは、1つのデータをあるインデックスセグメントに構築する消費時間に等しい、データをインデックスセグメントに構築する時間、すなわち、本開示のこの実施例では、データを一次インデックスセグメントに構築する時間に、インデックスセグメントを一次インデックスセグメントにマージする消費時間を加えた時間を指し、1,000万個の独立型のシステムでは、消費時間は秒レベルである。Tcopy_segmentは、1個の一次インデックスセグメントを複写する消費時間を指し、1,000万個の独立型および1000Mのローカルエリアネットワークのシステムでは、消費時間は秒レベルである。Treload_segmentは一次インデックスセグメントを初期化する消費時間を指し、これは、実用統計の結果によれば、ほぼ0秒でありうる。これにより、上記の解析によれば、この実施例で提供される検索方法の総合遅延は秒レベルである。この実施例で提供される検索方法の検索速度は非常に高速であり、関連技術と比較して、相当な改善が存在することが分かる。
【００６７】
この実施例で提供される方法では、インデックス構築デバイスからインデックスセグメントを取得するステップと、インデックス構築デバイスによって送信されて、構築された一次インデックスセグメントまたは大きなインデックスセグメントを受信するステップとにより、検索サービスを提供することが可能であり、検索速度を改善することができる。第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするとき、第1のレベルのインデックスセグメントは、好ましくは、空メモリ領域に隣接する第2のレベルのインデックスセグメントにマージされ、それによって、メモリの利用率を改善する。さらに、この実施例で提供される検索方法は、検索処理において遭遇する異常状況に対する耐障害性機構も導入し、それによって、検索のリアルタイムの性能を確実にする。
【実施例６】
【００６８】
この実施例は検索デバイスを提供し、図12を参照すると、このデバイスは、
それぞれのプリセット期間ごとに、インデックス構築デバイスから第1のレベルのインデックスセグメントを取得して、取得された第1のレベルのインデックスセグメントを第1のレベルのインデックスセグメントセットにマージするように構成された取得モジュール1201と、
取得モジュール1201によって取得された第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを複写して、複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージして、第2のレベルのインデックスセグメントセットを取得するように構成された第2のマージモジュール1202と、
取得モジュール1201によって取得された第1のレベルのインデックスセグメントセット内の第1のレベルのインデックスセグメントと前記第2のマージモジュール1202によって取得された第2のレベルのインデックスセグメントセット内の第2のレベルのインデックスセグメントとに従って、検索サービスを提供するように構成された検索モジュール1203と
を含む。
【００６９】
詳細には、第2のマージモジュール1202は、第1のレベルのインデックスセグメントセット内のそれぞれの第1のレベルのインデックスセグメントを今度は時間系列に従って複写して、複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするステップを行うように特に構成される。対応する第2のレベルのインデックスセグメントは、第2のレベルのインデックスセグメントセット内にあり、かつ空メモリに隣接する第2のレベルのインデックスセグメントである。
【００７０】
取得モジュール1201によって取得された第1のレベルのインデックスセグメントおよび第2のマージモジュール1202によって取得された第2のレベルのインデックスセグメントのそれぞれは、連続番号値および完全であるかどうかの符号を含む。
【００７１】
したがって、図13を参照すると、取得モジュール1201は、
それぞれのプリセット期間ごとに、連続番号値および完全であるかどうかの符号を搬送するインデックスセグメントアプリケーションをインデックス構築デバイスに送信するように構成された第2の送信ユニット1201aと、
第2の送信ユニット1201aによって送信された連続番号値および完全であるかどうかの符号に従ってインデックス構築デバイスによって送信されたインデックスセグメントを受信して、受信されたインデックスセグメントを第1のレベルのインデックスセグメントと見なして、第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするように構成された第2の受信ユニット1201bと
を特に含む。
【００７２】
したがって、第2のマージモジュール1202が、取得モジュール1201によって取得された第1のレベルのインデックスセグメントセット内のそれぞれの第1レベルのインデックスセグメントを複写して、複写された第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするとき、マージされた後の第2のレベルのインデックスセグメントの連続番号値は、マージするときの第1のレベルのインデックスセグメントの連続番号値および第2のレベルのインデックスセグメントの連続番号値のうち、大きい方の連続番号値である。
【００７３】
この実施例で提供されるデバイスでは、インデックス構築デバイスからインデックスセグメントを取得すること、およびインデックス構築デバイスによって送信されて、構築された一次インデックスセグメントまたは大きなインデックスセグメントを受信することにより、検索サービスを提供することが可能であり、検索速度を改善することができる。第1のレベルのインデックスセグメントを対応する第2のレベルのインデックスセグメントにマージするとき、第1のレベルのインデックスセグメントは、好ましくは、空メモリ領域に隣接する第2のレベルのインデックスセグメントにマージされ、それによって、メモリの利用率を改善する。さらにこの実施例で提供されるデバイスは、検索処理において遭遇する異常状況に対する耐障害性機構も導入し、それによって、検索のリアルタイムの性能を確実にする。
【実施例７】
【００７４】
この実施例は検索システムを提供し、図14を参照すると、このシステムは、インデックス構築デバイス1401と検索デバイス1402とを含む。
【００７５】
インデックス構築デバイス1401は、上記の実施例3で提供されるインデックス構築デバイスであってよい。
【００７６】
検索デバイス1402は、上記の実施例6で提供される検索デバイスであってよい。
【００７７】
実際の適用例では、検索システムは、インデックス構築デバイス1401と検索デバイス1402とを含み、インデックス構築デバイス1401は、取得されたデータをインデックスセグメントに構築して、構築されたインデックスセグメントを検索デバイス1402に送信するか、または検索デバイス1402は、インデックス構築デバイス1401からインデックスセグメントを積極的に取得して、ユーザに検索サービスを提供するように、インデックスセグメントを処理する。一般に、1個のインデックス構築デバイス1401が複数の検索デバイス1402にサービスを提供することが可能である。大規模な検索適用例では、データを複数の部分に切断して、データのそれぞれの部分が1個のインデックス構築デバイス1401および複数の検索デバイス1402に対応することが可能である。この実施例および上記の実施例のそれぞれは、データの1つの部分だけに関して例示され、大規模な検索適用例をサポートすることに関しては、それぞれの複写が異なるデータを記憶する状態で、この実施例で提供されるシステムの複数の複写を複写して、検索するときに、これらのデータを再度マージすることだけが必要とされる。インデックス構築デバイス1401は別個のデバイスであってよく、検索するためのそれぞれのデバイスは1個の検索デバイス1402だけを含み、情報は、ローカルエリアネットワークを介して、インデックス構築デバイス1401を含むデバイスと検索デバイス1402を含むデバイスとの間で送信可能である。したがって、この実施例で提供される検索システムでは、1つまたは複数の検索デバイス1402が存在してよく、その場合、検索システムの構造はやはり図15に示されるようでありうる。
【００７８】
この実施例で提供されるシステムは、検索サービスを提供するように、複数の一次インデックスセグメントを時間に基づいて構築して、構築された一次インデックスセグメントを大きなインデックスセグメントにマージして、一次インデックスセグメントまたは大きなインデックスセグメントを検索デバイスに送信するために、インデックス構築デバイスを使用し、これにより、検索速度を改善することができる。インデックス構築デバイスがインデックスセグメントにマージするとき、インデックスセグメントは、好ましくは、空メモリ領域に隣接するインデックスセグメントにマージされ、それによって、メモリの利用率を改善する。
【００７９】
上記の実施例で提供されたインデックス構築デバイスがインデックスを構築するとき、および上記の実施例で提供された検索デバイスが検索を実行するとき、機能モジュールの上記の分割は、単に例示のためのある例として挙げられ、実際の適用例では、必要に応じて、上記の機能を異なる機能モジュールによって完成するように割り振ること、すなわち、上述の機能のすべてまたは一部を完成するように、デバイスの内部構造を異なる機能モジュールに分割することが可能である点に留意されたい。さらに、上記の実施例で提供されたインデックス構築デバイスおよびインデックス構築方法の例は同じ概念に属し、上記の実施例で提供された検索デバイスならびに検索方法の例は同じ概念に属し、特定の実装プロセスは方法の例を指し、ここで繰り返されない。
【００８０】
本開示のこれらの実施例の上記の通し番号は、その優先順位を示すのではなく、説明のためだけに使用される。
【００８１】
本開示のこれらの実施例のステップのすべてまたは一部は、ハードウェアによって実施可能であるか、または関連するハードウェアに命令するためのプログラムを使用することによって完成可能である。このプログラムは、CD-ROMまたはハードディスクなど、可読記憶媒体内に記憶可能である。
【００８２】
前述の説明は、本開示の単なる好ましい実施例であり、本開示を限定するために使用されない。本開示の趣旨および原理から逸脱せずに行われる任意の修正、均等の置換、または改善は、本開示の範囲に包含されるべきである。
【符号の説明】
【００８３】
501  構築モジュール
502  第1のマージモジュール
503  送信モジュール
503a  第1の受信ユニット
503b  第1の送信ユニット
504  削除モジュール
505  バックアップモジュール
1201  取得モジュール
1201a  第2の送信ユニット
1201b  第2の受信ユニット
1202  第2のマージモジュール
1203  検索モジュール
1401  インデックス構築デバイス
1402  検索デバイス
【図１】
0005823037.tif 000003
【図２】
0005823037.tif 000004
【図３】
0005823037.tif 000005
【図４】
0005823037.tif 000006
【図５】
0005823037.tif 000007
【図６】
0005823037.tif 000008
【図７】
0005823037.tif 000009
【図８】
0005823037.tif 000010
【図９】
0005823037.tif 000011
【図１０】
0005823037.tif 000012
【図１１】
0005823037.tif 000013
【図１２】
0005823037.tif 000014
【図１３】
0005823037.tif 000015
【図１４】
0005823037.tif 000016
【図１５】
0005823037.tif 000017