(57)【要約】  本発明は、メモリ検索システムを開示する。前記システムは、複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることに用いられるインデックスモジュールと、前記インデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えることに用いられる検索モジュールとを含む。それに応じて、本発明は、また、メモリ検索方法、リアルタイム検索システム及びリアルタイム検索方法を開示する。
2015518223.tif 000002
【特許請求の範囲】
【請求項１】
複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることに用いられるインデックスモジュールと、
前記インデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えることに用いられる検索モジュールと、を含むことを特徴とする
メモリ検索システム。
【請求項２】
前記インデックスモジュールは、具体的に、現在受信された生データを処理し、インデックスデータを取得して現在のインデックスデータベースに記録し、現在のインデックスデータベースのインデックスデータを前記検索モジュールに同期させることに用いられることを特徴とする
請求項１に記載のメモリ検索システム。
【請求項３】
前記インデックスモジュールにより設定された各インデックスデータベースは、保存されたデータの更新時間に従ってソートされ、
前記インデックスモジュールは、さらに、現在のインデックスデータベースがいっぱいになる場合、現在取得されたインデックスデータを次のインデックスデータベースに記録し、次のインデックスデータベースのインデックスデータを前記検索モジュールに同期させ、このように繰り返して、最後のインデックスデータベースがいっぱいになる場合、１番目のインデックスデータベースをクリアし、現在取得されたインデックスデータを１番目のインデックスデータベースに記録し、１番目のインデックスデータベースのインデックスデータを前記検索モジュールに同期させることに用いられることを特徴とする
請求項２に記載のメモリ検索システム。
【請求項４】
前記インデックスモジュールは、
生データを受信し、ソースデータファイルを生成することに用いられるデータ受信サブモジュールと、
前記ソースデータファイルを処理し、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに保存し、インデックスデータ同期サブモジュールに通知することに用いられるインデックスデータ生成サブモジュールと、
前記インデックスデータ生成サブモジュールからの通知を受信した後、現在のインデックスデータベースにおける逆順ライブラリの逆順情報を前記検索モジュールに同期させることに用いられるインデックスデータ同期サブモジュールと、を含むことを特徴とする
請求項１〜３のいずれか一項に記載のメモリ検索システム。
【請求項５】
前記インデックスモジュールにより設定された各インデックスデータベースは、順次情報を記録するための一つの順次ライブラリと、逆順情報を記録するための一つの逆順ライブラリとを含み、
前記インデックスデータ生成サブモジュールは、具体的に、前記ソースデータファイルを順次処理し、順次情報を取得して現在のインデックスデータベースの順次ライブラリに記録し、前記順次情報に対して逆順処理を行い、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録することに用いられることを特徴とする
請求項４に記載のメモリ検索システム。
【請求項６】
前記検索モジュールは、前記インデックスデータ同期サブモジュールにより同期された逆順情報を受信し、まず受信された逆順情報をメモリの一時データベースにロードし、現在のインデックスデータベースの逆順ライブラリにおけるすべての逆順情報の同期が完了した後、対応するインデックスデータベースポインタを前記一時データベースに切り替え、前記一時データベースを新しいインデックスデータベースとしてメモリにおける対応するインデックスデータベースを代替することに用いられることを特徴とする
請求項５に記載のメモリ検索システム。
【請求項７】
すべてのインデックスデータを含み、すべてのデータを検索することに用いられるディスク検索サブシステムと、
最近の第１の時間閾値内に更新されたインデックスデータを含み、最近の第１の時間閾値内に更新されたデータを検索することに用いられる第１のメモリ検索サブシステムと、
最近の第２の時間閾値内に更新されたインデックスデータを含み、最近の第２の時間閾値内に更新されたデータを検索することに用いられる第２のメモリ検索サブシステムと、を含み、
前記第１の時間閾値と第２の時間閾値が予め設定されたものであり、前記第２の時間閾値が前記第１の時間閾値より小さいことを特徴とする
リアルタイム検索システム。
【請求項８】
前記第１のメモリ検索サブシステムは、
複数のインデックスデータベースを設定しており、シャーディングして最近の第１の時間閾値内に更新されたインデックスデータを取得し記録し、シャーディングして更新されたインデックスデータを第１の検索モジュールに同期させることに用いられる第１のインデックスモジュールと、
前記第１のインデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替え、及び、最近の第１の時間閾値内に更新されたデータを検索することに用いられる第１の検索モジュールと、を含むことを特徴とする
請求項７に記載のリアルタイム検索システム。
【請求項９】
前記第１の時間閾値は、２日間であることを特徴とする
請求項７又は８に記載のリアルタイム検索システム。
【請求項１０】
第２のメモリ検索サブシステムは、
複数のインデックスデータベースを設定しており、シャーディングして最近の第２の時間閾値内に更新されたインデックスデータを取得し記録し、シャーディングして更新されたインデックスデータを第２の検索モジュールに同期させることに用いられる第２のインデックスモジュールと、
前記第２のインデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替え、及び、最近の第２の時間閾値内に更新されたデータを検索することに用いられる第２の検索モジュールとを含むことを特徴とする
請求項７に記載のリアルタイム検索システム。
【請求項１１】
前記第２の時間閾値は、十分間より小さくなく且つ２日間より小さいことを特徴とする
請求項７、８又は１０に記載のリアルタイム検索システム。
【請求項１２】
メモリ検索方法であって、
複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを同期させるステップと、
前記同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えるステップと、を含むことを特徴とする
メモリ検索方法。
【請求項１３】
シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを同期させるステップは、
現在受信された生データを処理し、インデックスデータを取得して現在のインデックスデータベースに記録し、現在のインデックスデータベースのインデックスデータを同期させるステップを含むことを特徴とする
請求項１２に記載のメモリ検索方法。
【請求項１４】
シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを同期させるステップは、さらに、
前記各インデックスデータベースが保存されたデータの更新時間に従ってソートされ、
現在のインデックスデータベースがいっぱいになる場合、現在取得されたインデックスデータを次のインデックスデータベースに記録し、次のインデックスデータベースのインデックスデータを同期させ、このように繰り返して、最後のインデックスデータベースがいっぱいになった場合、１番目のインデックスデータベースをクリアし、現在取得されたインデックスデータを１番目のインデックスデータベースに記録し、１番目のインデックスデータベースのインデックスデータを同期させるステップを含むことを特徴とする
請求項１３に記載のメモリ検索方法。
【請求項１５】
シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを同期させるステップは、具体的に、生データを受信し、ソースデータファイルを生成し、前記ソースデータファイルを処理し、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに保存し、現在のインデックスデータベースにおける逆順ライブラリの逆順情報を同期させるステップを含むことを特徴とする
請求項１２〜１４のいずれか一項に記載のメモリ検索方法。
【請求項１６】
前記各インデックスデータベースは、順次情報を記録するための一つの順次ライブラリと、逆順情報を記録するための一つの逆順ライブラリとを含み、
前記ソースデータファイルを処理し、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに保存するステップは、前記ソースデータファイルを順次処理し、順次情報を取得して現在のインデックスデータベースの順次ライブラリに記録し、前記順次情報に対して逆順処理を行い、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録することを含むステップを特徴とする
請求項１５に記載のメモリ検索方法。
【請求項１７】
前記同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えるステップは、
前記逆順情報を受信し、まず受信された逆順情報をメモリの一時データベースにロードし、現在のインデックスデータベースの逆順ライブラリにおけるすべての逆順情報の同期が完了した後、対応するインデックスデータベースポインタを前記一時データベースに切り替え、前記一時データベースを新しいインデックスデータベースとしてメモリにおける対応するインデックスデータベースを代替するステップを含むことを特徴とする
請求項１５に記載のメモリ検索方法。
【請求項１８】
リアルタイム検索方法であって、
すべてのインデックスデータを含み、すべてのデータを検索することに用いられるディスク検索サブシステムと、最近の第１の時間閾値内に更新されたインデックスデータを含み、最近の第１の時間閾値内に更新されたデータを検索することに用いられる第１のメモリ検索サブシステムと、最近の第２の時間閾値内に更新されたインデックスデータを含み、最近の第２の時間閾値内に更新されたデータを検索することに用いられる第２のメモリ検索サブシステムと、を含むリアルタイム検索システムにより実現され、前記第１の時間閾値と第２の時間閾値が予め設定されたものであり、且つ前記第２の時間閾値が前記第１の時間閾値より小さいものであり、前記方法は、
すべてのデータに対する検索要求を受信した場合、前記ディスク検索サブシステムは、すべてのデータを検索するステップ、及び／又は、
最近の第１の時間閾値より大きくなく且つ第２の時間閾値より大きい期間内のデータに対する検索要求を受信した場合、前記第１のメモリ検索サブシステムは、最近の第１の時間閾値内に更新されたデータを検索するステップ、及び／又は、
最近の第２の時間閾値より大きくない期間内のデータに対する検索要求を受信した場合、前記第２のメモリ検索サブシステムは、最近の第２の時間閾値内に更新されたデータを検索するステップを含むことを特徴とする
リアルタイム検索方法。
【請求項１９】
前記第１の時間閾値は、２日間であり、前記第２の時間閾値は、２日間より小さく且つ十分間より小さくないことを特徴とする
請求項１８に記載のリアルタイム検索方法。
【請求項２０】
請求項１２〜１９のいずれか一項に記載の方法を実行するためのコンピュータ実行可能なコマンドを記憶していることを特徴とするコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願は、２０１２年６月６日に提出された、中国特許出願番号が２０１２１０１８４６４２．２であり、出願人が▲騰▼▲訊▼科技（深▲セン▼）有限公司であり、発明名称が「メモリ検索システム及び方法、リアルタイム検索システム及び方法」である出願に基づく優先権を主張するものであり、その出願の全文が引用により本書に組み込まれる。
【０００２】
本発明は、データ処理技術に関し、特に、メモリ検索、リアルタイム検索システム及び方法、コンピュータ記憶媒体に関する。
【背景技術】
【０００３】
従来、リアルタイム検索をサポートするシステムにおいて、インデックスと検索が一つのプロセスに統合されるので、新しい逆順インデックスは、即時に検索されて使用されることができる。メモリにおけるインデックスデータが閾値に達する、又は、間隔時間が閾値に達する場合、メモリにおけるインデックスデータをディスクのインデックスデータに統合させる。これにより、検索時にメモリのインデックスデータとディスクのインデックスデータを同時に検索する必要がある。検索データセットが小さい場合、当該検索システムのリアルタイム性能が要求を満たすことができる。しかし、検索とインデックスを一つのプロセスに統合させるので、検索とインデックスがいずれも大量の計算資源を消費する。したがって、大量のデータを持つ検索システムにおいて、類似した検索アーキテクチャを採用すると、大量のハードウェア設備を消費し、コストが高く、且つ効率が悪い。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これに鑑みて、本発明の主な目的は、リアルタイムで迅速なメモリ検索を実現するだけでなく、コストを低減させて効率を向上させることができるメモリ検索、リアルタイム検索システム及び方法、コンピュータ記憶媒体を提供することにある。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために、本発明の実施例に係る技術的なスキームは、以下のように実現される。
【０００６】
本発明の実施例に係るメモリ検索システムは、
複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることに用いられるインデックスモジュールと、
前記インデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えることに用いられる検索モジュールと、を含む。
【０００７】
本発明の実施例に係るリアルタイム検索システムは、
すべてのインデックスデータを含み、すべてのデータを検索することに用いられるディスク検索サブシステムと、
最近の第１の時間閾値内に更新されたインデックスデータを含み、最近の第１の時間閾値内に更新されたデータを検索することに用いられる第１のメモリ検索サブシステムと、
最近の第２の時間閾値内に更新されたインデックスデータを含み、最近の第２の時間閾値内に更新されたデータを検索することに用いられる第２のメモリ検索サブシステムと、を含み、
前記第１の時間閾値と第２の時間閾値が予め設定されたものであり、且つ前記第２の時間閾値が前記第１の時間閾値より小さい。
【０００８】
本発明の実施例に係るメモリ検索方法は、
複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを同期させるステップと、
前記同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えるステップと、を含む。
【０００９】
本発明の実施例に係るリアルタイム検索方法は、すべてのインデックスデータを含み、すべてのデータを検索することに用いられるディスク検索サブシステムと、最近の第１の時間閾値内に更新されたインデックスデータを含み、最近の第１の時間閾値内に更新されたデータを検索することに用いられる第１のメモリ検索サブシステムと、最近の第２の時間閾値内に更新されたインデックスデータを含み、最近の第２の時間閾値内に更新されたデータを検索することに用いられる第２のメモリ検索サブシステムとを含むリアルタイム検索システムにより実現され、前記第１の時間閾値と第２の時間閾値が予め設定されたものであり、前記第２の時間閾値が前記第１の時間閾値より小さいものであり、前記方法は、
すべてのデータに対する検索要求を受信した場合、前記ディスク検索サブシステムがすべてのデータを検索するステップ、及び／又は、
最近の第１の時間閾値より大きくなく且つ第２の時間閾値より大きい期間内のデータに対する検索要求を受信した場合、前記第１のメモリ検索サブシステムが最近の第１の時間閾値内に更新されたデータを検索するステップ、及び／又は、
最近の第２の時間閾値より大きくない期間内のデータに対する検索要求を受信した場合、前記第２のメモリ検索サブシステムが最近の第２の時間閾値内に更新されたデータを検索するステップと、を含む。
【００１０】
本発明の実施例に係るコンピュータ記憶媒体は、前記メモリ検索方法又はリアルタイム検索方法を実行するためのコンピュータプログラムを保存している。
【００１１】
本発明の実施例に係るメモリ検索、リアルタイム検索システム及び方法、コンピュータ記憶媒体において、インデックスモジュールは、シャーディングしてインデックスデータを更新することができ、検索データによりシャーディングしてメモリにおけるインデックスデータを更新することもできる。インデックスデータに対するシャーディング及び記憶、増分同期インデックス及び全メモリ検索により、リアルタイム検索をより良くサポートすることができ、実際の応用においてインデックスデータの秒レベルの更新を達成し、且つアーキテクチャ上でインデックスモジュールと検索モジュールを分けることによって、ハードウェア設備のコストを低減させ、検索効率を向上させる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例２におけるメモリ検索方法の実現のフローチャートである。
【図２】本発明の実施例３におけるメモリ検索システムの構成を示す図である。
【図３】本発明の実施例３におけるインデックスモジュールに複数のインデックスデータベースを設定する実例の構成を示す図である。
【図４】本発明の実施例３に係る検索モジュールがメモリにおけるインデックスデータを更新する実例を示す図である。
【図５】本発明の実施例３に係る検索モジュールがメモリにおけるインデックスデータを更新する実例を示す図である。
【図６】本発明の実施例４に係るリアルタイム検索システムの構成を示す図である。
【発明を実施するための形態】
【００１３】
実施例１
本発明の実施例に係るメモリ検索システムは、シャーディングしてインデックスデータを更新して検索モジュールに同期させるインデックスモジュールと、メモリにおける対応するインデックスデータをリアルタイムに更新し、インデックスデータベースポインタを切り替えることにより、インデックスデータを迅速で即時に更新することが可能となる検索モジュールとを備える。
【００１４】
本発明の実施例に係るメモリ検索システムは、複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることに用いられるインデックスモジュールと、前記インデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えることに用いられる検索モジュールとを含む。
【００１５】
ここで、前記インデックスモジュールは、現在受信された生データを処理し、インデックスデータを取得して現在のインデックスデータベースに記録し、現在のインデックスデータベースのインデックスデータを前記検索モジュールに同期させることに用いられる。ここで、前記インデックスモジュールにより設定された各インデックスデータベースは、保存されたデータの更新時間に従ってソートされる。前記インデックスモジュールは、また、現在のインデックスデータベースがいっぱいになる場合、現在取得されたインデックスデータを次のインデックスデータベースに記録し、次のインデックスデータベースのインデックスデータを前記検索モジュールに同期させ、このように繰り返して、最後のインデックスデータベースがいっぱいになる場合、１番目のインデックスデータベースをクリアし、現在取得されたインデックスデータを１番のインデックスデータベースに記録し、１番のインデックスデータベースのインデックスデータを前記検索モジュールに同期させることに用いられる。
【００１６】
具体的には、前記インデックスモジュールは、生データを受信し、ソースデータファイルを生成することに用いられるデータ受信サブモジュールと、前記ソースデータファイルを処理し、逆順情報を取得し、現在のインデックスデータベースの逆順ライブラリに保存し、前記インデックスデータ同期サブモジュールに通知することに用いられるインデックスデータ生成サブモジュールと、前記インデックスデータ生成サブモジュールからの通知を受信した後、現在のインデックスデータベースにおける逆順ライブラリの逆順情報を前記検索モジュールに同期させることに用いられるインデックスデータ同期サブモジュールとを含む。
【００１７】
前記インデックスモジュールにより設定された各インデックスデータベースは、順次情報を記録するための一つの順次ライブラリと逆順情報を記録するための一つの逆順ライブラリとを含む。
【００１８】
前記インデックスデータ生成サブモジュールは、前記ソースデータファイルを順次処理し、順次情報を取得して現在のインデックスデータベースの順次ライブラリに記録し、前記順次情報に対して逆順処理を行い、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録することに用いられる。
【００１９】
具体的には、前記インデックスデータ生成サブモジュールは、値更新が含まれる生データに対して、前記生データのＩＤに基づいてその逆順情報が保存されたインデックスデータベースを検索し、当該インデックスデータベースにおける逆順ライブラリの値属性テーブルを更新すること、及び／又は、テキスト削除が含まれる生データに対して、まず当該生データを順次処理し、削除命令がマーキングされ且つ削除すべきＩＤが含まれる順次ファイル、及びドキュメントデータ属性ファイルを生成し、現在のインデックスデータベースの順次ライブラリに記録し、次に削除すべきＩＤを、当該ＩＤが含まれるすべての逆順ライブラリの削除テーブルに追加し、逆順ライブラリの逆順タイムスタンプを更新すること、及び／又は、ファイル更新が含まれる生データに対して、まず当該生データを順次処理し、削除命令がマーキングされ且つ削除すべきＩＤが含まれる順次ファイル、及びドキュメントデータ属性ファイルを生成し、現在のインデックスデータベースの順次ライブラリに記録し、次に削除すべきＩＤを、前記ＩＤが含まれるすべての逆順ライブラリの削除テーブルに追加し、すべての順次ファイルを読み取り、すべての『ドキュメント、ワード、位置』のトリプルをソートし、逆順インデックスファイル、逆順値属性テーブル、ｄｏｃｉｄ−ｐａｇｅｉｄマッピングテーブル及び削除テーブルを取得し、現在のインデックスデータベースの逆順ライブラリに記録し、前記逆順ライブラリの逆順タイムスタンプを更新すること、及び／又は、ファイル追加が含まれる生データに対して、まず当該生データを順次処理し、順次ファイル及びドキュメントデータ属性ファイルを生成し、現在のインデックスデータベースの順次ライブラリに記録し、次にすべての順次ファイルを読み取り、すべての『ドキュメント、ワード、位置』のトリプルをソートし、逆順インデックスファイル、逆順値属性テーブル、ｄｏｃｉｄ−ｐａｇｅｉｄマッピングテーブル及び削除テーブルを取得し、現在のインデックスデータベースの逆順ライブラリに記録し、前記逆順ライブラリの逆順タイムスタンプを更新することに用いられる。
【００２０】
ここで、前記検索モジュールは、前記インデックスデータ同期サブモジュールにより同期された逆順情報を受信し、まず受信された逆順情報をメモリの一時データベースにロードし、現在のインデックスデータベースの逆順ライブラリにおけるすべての逆順情報の同期が完了した後、対応するインデックスデータベースポインタを前記一時データベースに切り替え、前記一時データベースを新しいインデックスデータベースとしてメモリにおける対応するインデックスデータベースを代替することに用いられる。
【００２１】
実施例２
それに応じて、本発明の実施例に係るメモリ検索方法は、図１に示すように、以下のステップを含む。
【００２２】
ステップ１０１において、複数のインデックスデータベースを設定しており、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを同期させる。
【００２３】
ここで、ステップ１０１は、実施例１における前記システムのインデックスモジュールにより実現され、そして実施例１における前記検索モジュールに同期される。
【００２４】
ステップ１０２において、前記同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替える。
【００２５】
ここで、ステップ１０２は、実施例１における前記システムの検索モジュールにより実現される。
【００２６】
ここで、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることは、現在受信された生データを処理し、インデックスデータを取得して現在のインデックスデータベースに記録し、現在のインデックスデータベースのインデックスデータを前記検索モジュールに同期させることを含む。
【００２７】
ここで、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることは、さらに、前記各インデックスデータベースが、保存されたデータの更新時間に従ってソートされ、現在のインデックスデータベースがいっぱいになる場合、インデックスモジュールが現在取得されたインデックスデータを次のインデックスデータベースに記録し、次のインデックスデータベースのインデックスデータを検索モジュールに同期させること、このように繰り返して、最後のインデックスデータベースがいっぱいになる場合、１番目のインデックスデータベースをクリアし、現在取得されたインデックスデータを１番のインデックスデータベースに記録し、１番のインデックスデータベースのインデックスデータを検索モジュールに同期させることを含む。
【００２８】
具体的には、シャーディングしてインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを検索モジュールに同期させることは、具体的に、生データを受信し、ソースデータファイルを生成すること、前記ソースデータファイルを処理し、逆順情報を取得し、現在のインデックスデータベースの逆順ライブラリに保存すること、現在のインデックスデータベースにおける逆順ライブラリの逆順情報を前記検索モジュールに同期させることを含む。
【００２９】
ここで、前記各インデックスデータベースは、順次情報を記録するための一つの順次ライブラリと逆順情報を記録するための一つの逆順ライブラリとを含む。ソースデータファイルを処理し、逆順情報を取得し、現在のインデックスデータベースの逆順ライブラリに保存することは、前記ソースデータファイルを順次処理し、順次情報を取得して現在のインデックスデータベースの順次ライブラリに記録し、前記順次情報に対して逆順処理を行い、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録することを含む。
【００３０】
ここで、前記検索モジュールが前記インデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えることは、前記検索モジュールが前記逆順情報を受信し、まず受信された逆順情報をメモリの一時データベースにロードし、現在のインデックスデータベースの逆順ライブラリにおけるすべての逆順情報の同期が完了したまで、対応するインデックスデータベースポインタを前記一時データベースに切り替え、前記一時データベースを新しいインデックスデータベースとしてメモリにおける対応するインデックスデータベースを代替することを含む。
【００３１】
実施例３
図２に示すように、本発明の実施例に係るメモリ検索システムは、インデックスモジュールと検索モジュールとを含むことができる。インデックスモジュールと検索モジュールは、それぞれ２つの異なる装置に設定され、前記２つの異なる装置が有線で接続される又は無線で接続されることができる。インデックスモジュールは、リアルタイムに受信された生データを処理し、逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録し、前記逆順ライブラリにおける逆順情報を前記検索モジュールに同期させることに用いられる。検索モジュールは、前記インデックスモジュールにより同期された逆順情報を受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新された対応するインデックスデータベースに切り替えることに用いられる。
【００３２】
ここで、インデックスモジュールは、生データを受信し、ソースデータファイルを生成することに用いられるデータ受信サブモジュールと、前記ソースデータファイルを処理し、逆順情報を取得し、現在のインデックスデータベースの逆順ライブラリに保存し、インデックスデータ同期サブモジュールに通知することに用いられるインデックスデータ生成サブモジュールと、前記インデックスデータ生成サブモジュールからの通知を受信した後、現在のインデックスデータベースにおける逆順ライブラリの逆順情報を前記検索モジュールに同期させることに用いられるインデックスデータ同期サブモジュールとを含む。
【００３３】
具体的には、データ受信サブモジュールにより受信された生データには、データ操作命令とデータ内容が含まれる。データ操作命令は、主にテキスト追加、テキスト更新、テキスト削除及び値更新という四つのタイプを含む。その中で、テキスト追加に対応する生データは、固定されたｘｍｌフォーマットで示されるドキュメントであってよく、当該ドキュメントのエリアがテキストエリアと値エリアを含み、テキストエリアがタイトル、本文などのようなドキュメントのテキスト情報を記録することに用いられ、値エリアがドキュメントのＩＤ、指紋などの標識情報のようなドキュメントの値属性を記録することに用いられる。値更新に対応する生データは、更新すべきドキュメントのＩＤ及び対応する値属性のみを含む。テキスト削除に対応する生データは、削除すべきドキュメントのＩＤを含む。ここで、ソースデータファイルを生成する場合、テキスト追加、テキスト更新、テキスト削除に対応する生データは、いずれも同一のファイルに書き込まれ、値更新に対応する生データは、別のファイルに保存される。
【００３４】
インデックスデータ生成サブモジュールは、複数のインデックスデータベースを設置設定しており、各インデックスデータベースが同じ容量閾値を有することができ、当該容量閾値が、インデックスデータベースが対応する量の生データのインデックスデータを最大限に保存できることを表すことに用いられる。各インデックスデータベースは、保存されたインデックスデータの更新時間に従ってソートされ、１番のインデックスデータベースの更新時間が最も早く、最後のインデックスデータベースの更新時間が最も遅い。それに応じて、メモリに複数のインデックスデータベースを設定する。メモリにおける各インデックスデータベースは、それぞれ前記インデックスデータ生成サブモジュールに設定された各インデックスデータベースに対応する。
【００３５】
たとえば、図３に示すように、インデックスデータ生成サブモジュールに、１番、２番、３番、……、Ｎ−１番、Ｎ番のインデックスデータベースというＮ（Ｎが１より大きい整数である）個のインデックスデータベースを設定することができ、各インデックスデータベースは、データの更新時間（たとえば、逆順ライブラリの更新タイムスタンプ）に従ってソートされ、１番のインデックスデータベースの更新時間が最も早く、Ｎ番のインデックスデータベースが更新時間が最も遅く、現在２番のインデックスデータベースを使用する場合、インデックスデータ生成サブモジュールは、現在取得されたインデックスデータを２番のインデックスデータベースに統合して保存し、つまり、インデックスデータ生成サブモジュールは、現在取得された順次情報及び逆順情報を２番のインデックスデータベースに統合して保存する。
【００３６】
各インデックスデータベースには一つの順次ライブラリと一つの逆順ライブラリとが含まれる。順次ライブラリは、当該データベースにおけるすべての生データの順次情報を記録することに用いられ、順次ファイルとドキュメントデータ属性ファイルなどを含むことができ、順次ファイルがすべての『ドキュメント、ワード、位置』のトリプルを記録することに用いられ、ドキュメント属性ファイルが各生データの値属性を記録することに用いられる。逆順ライブラリは、当該データベースにおけるすべての生データの逆順情報を記録することに用いられ、逆順インデックスファイル、逆順値属性テーブル、ｄｏｃｉｄ−ｐａｇｅｉｄマッピングテーブル及び削除テーブルなどを含むことができる。
【００３７】
データ受信サブモジュールにより取得されたソースデータファイルに対して、インデックスデータ生成サブモジュールは、前記ソースデータファイルをリアルタイムにスキャンし、現在更新された生データに対して順次処理と逆順処理を行い、取得された順次情報及び逆順情報を現在のインデックスデータベースに保存する。具体的には、インデックスデータ生成サブモジュールは、現在更新された生データを順次処理し、順次ファイル及びドキュメントデータ属性ファイルなどの順次情報を取得して現在のインデックスデータベースの順次ライブラリに記録し、前記順次ファイル及びドキュメントデータ属性ファイルなどの順次情報に基づいて逆順インデックスファイル、逆順値属性テーブル、ｄｏｃｉｄ−ｐａｇｅｉｄマッピングテーブル及び削除テーブルなどの逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録する。
【００３８】
現在のインデックスデータベースにおけるデータ量が予め設定された容量閾値に達する場合、現在取得された順次情報及び逆順情報を現在のインデックスデータベースの次のインデックスデータベースに保存する。現在すべてのインデックスデータベースのデータ量がいずれも予め設定された容量閾値に達する場合、１番目のインデックスデータベースをクリアし、現在取得された順次情報及び逆順情報を１番のインデックスデータベースに保存し、つまり、現在取得された順次情報を１番のインデックスデータベースの順次ライブラリに記録し、現在取得された逆順情報を１番のインデックスデータベースの逆順ライブラリに記録する。インデックスデータ生成サブモジュールは、取得されたインデックスデータを時間順に各インデックスデータベースに保存し、図３に示す例について、１番のインデックスデータベースがいっぱいになる場合、インデックスデータを２番のインデックスデータベースに保存し、２番のインデックスデータベースがいっぱいになる場合、インデックスデータを３番のインデックスデータベースに保存し、これによって類推し、Ｎ番のインデックスデータベースがいっぱいになる場合、１番目のインデックスデータベースをクリアし、インデックスデータを１番のインデックスデータベースに保存する。これにより、インデックスデータは、各インデックスデータベースに循環して記憶されることができ、つまり、順次情報及び逆順情報を各インデックスデータベースに循環して記憶することができる。
【００３９】
具体的には、異なる生データに対して、インデックスデータ生成サブモジュールは、次のような順次処理及び逆順処理を行う。
【００４０】
第一に、数値更新が含まれる生データに対して、前記生データのＩＤに基づいてその逆順情報が保存されたインデックスデータベースを検索し、当該インデックスデータベースにおける逆順ライブラリの値属性テーブルを更新する。具体的には、前記インデックスデータベースにおける逆順ライブラリの値属性テーブルの対応する値を生データにおける値と一致するように更新し、前記値属性テーブルのタイムスタンプを更新する。
【００４１】
第二に、テキスト削除が含まれる生データに対して、まず当該生データを順次処理し、順次情報を取得し、つまり、削除命令がマーキングされ且つ削除すべきＩＤが含まれる順次ファイル及びドキュメントデータ属性ファイルを生成し、現在のインデックスライブラリの順次ライブラリに記録し、次に逆順処理を行い、即ち、削除すべきＩＤを前記ＩＤが含まれるすべての逆順ライブラリの削除テーブルに追加し、前記逆順ライブラリの逆順タイムスタンプを更新する。
【００４２】
第三に、ファイル更新が含まれる生データに対して、まず当該生データを順次処理し、順次情報を生成し、つまり、削除命令がマーキングされ且つ削除すべきＩＤが含まれる順次ファイル及びドキュメントデータ属性ファイルを生成し、現在のインデックスライブラリの順次ライブラリに記録し、次に逆順処理を行い、つまり、削除すべきＩＤを前記ＩＤが含まれるすべての逆順ライブラリの削除テーブルに追加し、すべての順次ファイルを読み取り、すべての『ドキュメント、ワード、位置』のトリプルをソートし、逆順インデックスファイル、逆順値属性テーブル、ｄｏｃｉｄ−ｐａｇｅｉｄマッピングテーブル及び削除テーブルなどの逆順情報を取得し、現在のインデックスデータベースの逆順ライブラリに記録し、前記逆順ライブラリの逆順タイムスタンプを更新する。
【００４３】
第四に、ファイル追加が含まれる生データに対して、まず当該生データを順次処理し、順次情報を取得し、つまり、順次ファイル及びドキュメントデータ属性ファイルを生成し、現在のインデックスライブラリの順次ライブラリに記録し、次に逆順処理を行い、つまり、すべての順次ファイルを読み取り、すべての『ドキュメント、ワード、位置』のトリプルをソートし、逆順インデックスファイル、逆順値属性テーブル、ｄｏｃｉｄ−ｐａｇｅｉｄマッピングテーブル及び削除テーブルを取得し、現在のインデックスデータベースの逆順ライブラリに記録し、逆順ライブラリの逆順タイムスタンプを更新する。
【００４４】
インデックスデータ生成サブモジュールは、上記の処理プロセスに、まず指定された量の生データに対して上記の順次処理を行い、その順次情報を取得して現在のインデックスデータベースの順次ライブラリに記録し、次に取得されたすべての逆順情報を読み取り、すべての逆順情報に対して一緒に上記の逆順処理を行い、その逆順情報を取得して現在のインデックスデータベースの逆順ライブラリに記録すると説明すべきである。以上の操作が完了した後、新しい逆順ライブラリを取得する。ここで、インデックスデータ生成サブモジュールが一回で処理する生データ量は、一つのインデックスデータベースの容量閾値より大きくなく、インデックスデータベースの容量閾値の何分の一であってよく、インデックスデータベースの容量閾値に等しくてもよい。
【００４５】
新しい逆順ライブラリを生成した又は更新した後、インデックスデータ生成サブモジュールは、データ同期を行うようにインデックスデータ同期サブモジュールに通知し、インデックスデータ同期サブモジュールが現在のインデックスデータベースの逆順ライブラリにおける逆順情報を検索モジュールに同期させる。ここで、現在使用しているインデックスデータベースの以外、他のデータベースは、変化しなく、同期を必要としない。これにより、データ同期の検索システムの性能に対する影響を低減させることができる。
【００４６】
検索モジュールは、インデックスデータ同期サブモジュールにより同期された逆順情報を受信し、まず受信された逆順情報をメモリの一時データベースにロードし、現在のインデックスデータベースの逆順ライブラリにおけるすべての逆順情報の同期が完了した後、対応するインデックスデータベースポインタを前記一時データベースに切り替え、前記一時データベースを新しいインデックスデータベースとしてメモリにおける対応するインデックスデータベースを代替する。
【００４７】
たとえば、図４と図５に示すように、現在３番のインデックスデータベースを使用している場合、インデックスデータ同期サブモジュールは、３番のインデックスデータベースにおける逆順ライブラリの逆順情報を検索モジュールに同期させる。検索モジュールが前記逆順情報を受信してメモリの一時データベースにロードし、３番のインデックスデータベースにおける逆順ライブラリのすべての逆順情報を当該一時データベースに同期した後、検索モジュールは、前記一時データベースを新しい３番のインデックスデータベースとして、メモリにおける元の３番のインデックスデータベースを削除し、３番のインデックスデータベースのポインタを前記新しい３番のインデックスデータベースに切り替える。これにより、検索モジュールがリアルタイムに更新されたインデックスデータに基づいて外部に検索サービスを提供することを確保することができる。且つ、データベースへの切り替え操作がメモリにポインタにより実現されるので、スムーズに切り替えることができ、基本的に、検索モジュールが外部に検索サービスを提供することに影響しない。
【００４８】
上記から分かるように、一つのドキュメントに対して、検索モジュールに入った後、順次処理、逆順処理、及びデータ同期という三つの処理が行われる必要がある。毎回追加されたデータを処理するので、順次処理のための時間が小さく、データ同期が主にネットワーク伝送操作であるので、性能のボトルネックにならない。毎回インデックスデータベースのすべての順次情報に対して逆順処理を行うので、通常比較的時間がかかるが、上記の処理プロセスに単一のインデックスデータベースの容量が制限されるので、逆順時間を短縮させ、インデックスデータの更新スピードを向上させる。
【００４９】
本実施例において、シャーディング、増分同期及び全メモリ検索などによって、インデックスデータの更新スピードを大幅に向上させることができる。
【００５０】
実施例４
実際の使用において、複数の検索システムを組み合わせて使用して、リアルタイム検索を実現することができる。
【００５１】
本実施例に係るリアルタイム検索システムは、図６に示すように、ディスク検索サブシステムと、第１のメモリ検索サブシステムと及び第２のメモリ検索サブシステムとを含む。
【００５２】
前記ディスク検索サブシステムは、すべてのインデックスデータを含み、すべてのデータを検索することに用いられる。
【００５３】
前記第１のメモリ検索サブシステムは、最近の第１の時間閾値内に更新されたインデックスデータを含み、最近の第１の時間閾値内に更新されたデータを検索することに用いられる。
【００５４】
前記第２のメモリ検索サブシステムは、最近の第２の時間閾値内に更新されたインデックスデータを含み、最近の第２の時間閾値内に更新されたデータを検索することに用いられる。
【００５５】
前記第１の時間閾値と第２の時間閾値は、予め設定されたものであり、且つ前記第２の時間閾値は、前記第１の時間閾値より小さい。
【００５６】
ここで、前記第１のメモリ検索サブシステムは、複数のインデックスデータベースを設定しており、シャーディングして最近の第１の時間閾値内に更新されたインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを前記第１の検索モジュールに同期させることに用いられる第１のインデックスモジュールと、前記第１のインデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されインデックスデータベースに切り替えることに用いられ、及び、最近の第１の時間閾値内に更新されたデータを検索することに用いられる第１の検索モジュールとを含む。
【００５７】
ここで、前記第２のメモリ検索サブシステムは、複数のインデックスデータベースを設定しており、シャーディングして最近の第２の時間閾値内に更新されたインデックスデータを取得して記録し、シャーディングして更新されたインデックスデータを前記第２の検索モジュールに同期させることに用いられる第２のインデックスモジュールと、前記第２のインデックスモジュールにより同期されたインデックスデータを受信し、メモリにおける対応するインデックスデータベースを更新し、対応するインデックスデータベースポインタを更新されたインデックスデータベースに切り替えることに用いられ、及び、最近の第２の時間閾値内に更新されたデータを検索することに用いられる第２の検索モジュールとを含む。
【００５８】
つまり、本実施例における第１のメモリ検索サブシステムと第２のメモリ検索サブシステムは、その構成がいずれも実施例１におけるメモリ検索システムと同じであるが、本実施例において第１のメモリ検索サブシステムが第１の時間閾値内のインデックスデータを更新すること、第２のメモリ検索サブシステムが第２の時間閾値内のインデックスデータを更新することが限定されることは、実施例１と異なる。
【００５９】
それに応じて、本実施例に係るリアルタイム検索方法は、前記リアルタイム検索システムにより実現され、すべてのデータに対する検索要求を受信した場合、前記ディスク検索サブシステムがすべてのデータを検索するステップ、及び／又は、最近の第１の時間閾値より大きくなく且つ第２の時間閾値より大きい期間内のデータに対する検索要求を受信した場合、前記第１のメモリ検索サブシステムが最近の第１の時間閾値内に更新されたデータを検索するステップ、及び／又は、最近の第２の時間閾値より大きくない期間内のデータに対する検索要求を受信した場合、前記第２のメモリ検索サブシステムが最近の第２の時間閾値内に更新されたデータを検索するステップを含むことができる。
【００６０】
ここで、前記第１の時間閾値は、２日間であってよく、前記第２の時間閾値は、２日間より小さく且つ１０分間より小さくなく、一般的に１０分間に設定される。
【００６１】
ディスク検索サブシステムの構成は、従来のディスク検索システムと同じであり、全量データのインデックスデータを保存しており、インデックスデータを一日一回更新するので、最近の１日間の前のすべてのデータを検索することができるが、最近の１日間に更新されたデータをカバーすることができない。第１のメモリ検索サブシステムは、最近の２日間に更新されたデータを検索することができるが、２日間内のデータ更新量が大きいので、そのインデックス更新がリアルタイム要求を満たせない可能性がある。第２のメモリ検索サブシステムは、最近の１０分間に更新されたデータを検索することができ、インデックスデータが１０分間ごとに更新され、１０分間内のデータ更新量が小さいので、インデックスデータの更新がリアルタイムにより近く、リアルタイムなデータ検索を実現する。上記の三つのサブシステムを一つの検索システムに組み合わせることにより、リアルタイム検索を実現し、且つ検索データのトータルリコールを保証することができる。
【００６２】
本発明の実施例に係るモジュールは、ソフトウェア機能モジュールで実現され且つ独立した製品として販売又は使用される場合、コンピュータ読み取り可能な記憶媒体に記憶されることができる。このような理解に基づいて、本発明の実施例の技術的手段は、本質上又は従来技術に貢献する部分がソフトウェア製品の形態で体現されることができ、当該コンピュータ製品は、記憶媒体に記憶され、コンピュータ設備（パーソナルコンピュータ、サーバ、又はネットワーク設備などであってよい）に本発明の各実施例に係る方法の全部又は一部を実行させるための若干のコマンドを含む。前記記憶媒体は、Ｕディスク、モバイルハードディスク、読み出し専用メモリ（ＲＯＭ：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク又は光ディスクなどの、プログラムコードを記憶できる様々な媒体を含む。このようにして、本発明の実施例は、いかなる特定のハードウェアとソフトウェアの組み合わせに制限されない。
【００６３】
それに応じて、本発明の実施例に係るコンピュータ記憶媒体は、前記メモリ検索方法又はリアルタイム検索方法を実行するためのコンピュータプログラムを記憶している。
【００６４】
上記は、本発明の好ましい実施例だけであるが、本発明の保護範囲を限定することに用いられるものではない。 
【図１】
2015518223.tif 000003
【図２】
2015518223.tif 000004
【図３】
2015518223.tif 000005
【図４】
2015518223.tif 000006
【図５】
2015518223.tif 000007
【図６】
2015518223.tif 000008
【国際調査報告】
2015518223.tif 000009
2015518223.tif 000010
2015518223.tif 000011
2015518223.tif 000012