(57)【特許請求の範囲】
【請求項１】
第１ユーザデータ及び対応する第１ユーザ識別子を取得することと、
前記第１ユーザデータに対して第１インデックスを作成することと、
前記第１インデックスをシリアライズ処理し、第１バイナリ文字列を得ることと、
前記第１バイナリ文字列と前記第１ユーザ識別子を関連付けて前記非リレーショナルデータベースに記憶することと、
非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取ることと、
前記第１シリアライズデータをデシリアライズ処理し、第１インデックスを得ることと、
前記第１インデックスに基づいて検索を行うことと、を含み、
前記第１シリアライズデータが前記第１バイナリ文字列を含むことを特徴とするデータの検索方法。
【請求項２】
前記第１インデックスに基づいて検索を行うことは、
前記第１インデックスを内部メモリに記憶することと、
内部メモリにおいて前記第１インデックスに基づいて検索を行うことと、を含むことを特徴とする請求項１に記載のデータの検索方法。
【請求項３】
受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正することを更に含み、前記修正要求が前記第２ユーザ識別子を含むことを特徴とする請求項１に記載のデータの検索方法。
【請求項４】
前記受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正することは、
非リレーショナルデータベースから前記第２ユーザ識別子に対応する第２シリアライズデータを読み取ることと、
前記第２シリアライズデータをデシリアライズ処理し、第２インデックスを得ることと、
前記修正要求に基づいて前記第２インデックスを修正することと、
修正後の第２インデックスをシリアライズ処理し、修正後の第２シリアライズデータを得ることと、
前記非リレーショナルデータベースに記憶している第２シリアライズデータを修正後の第２シリアライズデータに更新することと、を含むことを特徴とする請求項３に記載のデータの検索方法。
【請求項５】
前記修正要求に基づいて前記第２インデックスを修正することは、
前記第２インデックスを内部メモリに記憶することと、
内部メモリにおいて前記第２インデックスを修正することと、を含むことを特徴とする請求項４に記載のデータの検索方法。
【請求項６】
第１ユーザデータ及び対応する第１ユーザ識別子を取得するように配置される取得モジュールと、
前記第１ユーザデータに対して第１インデックスを作成するように配置されるインデックス作成モジュールと、
前記第１インデックスをシリアライズ処理し、第１バイナリ文字列を得るように配置される第２処理モジュールと、
前記第１バイナリ文字列と前記第１ユーザ識別子を関連付けて前記非リレーショナルデータベースに記憶するように配置される記憶モジュールと、
非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取るように配置される第１読み取りモジュールと、
前記第１シリアライズデータをデシリアライズ処理し、第１インデックスを得るように配置される第１処理モジュールと、
前記第１インデックスに基づいて検索を行うように配置される検索モジュールと、を備え、
前記第１シリアライズデータが前記第１バイナリ文字列を含むことを特徴とするデータの検索装置。
【請求項７】
前記検索モジュールは、前記第１インデックスを内部メモリに記憶するように配置される第１記憶サブモジュールと、内部メモリにおいて前記第１インデックスに基づいて検索を行うように配置される検索サブモジュールと、を備えることを特徴とする請求項６に記載のデータの検索装置。
【請求項８】
受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正するように配置される修正モジュールを更に備え、
前記修正要求が前記第２ユーザ識別子を含むことを特徴とする請求項６に記載のデータの検索装置。
【請求項９】
前記修正モジュールは、
非リレーショナルデータベースから前記第２ユーザ識別子に対応する第２シリアライズデータを読み取るように配置される読み取りサブモジュールと、
前記第２シリアライズデータをデシリアライズ処理し、第２インデックスを得るように配置される第１処理サブモジュールと、
前記修正要求に基づいて前記第２インデックスを修正するように配置される修正サブモジュールと、
修正後の第２インデックスをシリアライズ処理し、修正後の第２シリアライズデータを得るように配置される第２処理サブモジュールと、
前記非リレーショナルデータベースに記憶している第２シリアライズデータを修正後の第２シリアライズデータに更新するように配置される更新サブモジュールと、を備えることを特徴とする請求項８に記載のデータの検索装置。
【請求項１０】
前記修正サブモジュールは、
前記第２インデックスを内部メモリに記憶するように配置される第２記憶サブモジュールと、
内部メモリにおいて前記第２インデックスを修正するように配置される修正サブモジュールと、備えることを特徴とする請求項９に記載のデータの検索装置。
【請求項１１】
第１ユーザデータ及び対応する第１ユーザ識別子を取得し、
前記第１ユーザデータに対して第１インデックスを作成し、
前記第１インデックスをシリアライズ処理し、第１バイナリ文字列を得て、
前記第１バイナリ文字列と前記第１ユーザ識別子を関連付けて前記非リレーショナルデータベースに記憶し、
非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取り、
前記第１シリアライズデータをデシリアライズ処理し、第１インデックスを得て、
前記第１インデックスに基づいて検索を行うように配置されるプロセッサと、
プロセッサにより実行可能なコマンドを記憶するためのメモリと、を備え、
前記第１シリアライズデータが前記第１バイナリ文字列を含むことを特徴とするサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、出願番号がＣＮ２０１５１０５３１６７３．４であり、出願日が２０１５年０８月２６日である中国特許出願に基づいて提出され、且つ該中国特許出願の優先権を主張し、該中国特許出願の全ての内容はここで参考として本願に援用される。
【０００２】
本発明はデータ処理技術分野に関し、特に、データの検索方法、装置及び端末に関する。
【背景技術】
【０００３】
端末の機能が多くなるに従って、ユーザが端末を使用して生成したデータも多くなっている。占有されている端末の内部メモリを最小限に抑えて、記憶スペースが小さすぎて端末の使用性能に影響を与えることを避けるために、ユーザが個人データをクラウドに同期させて記憶することができる。通常、クラウドサーバがユーザに個人データの検索機能を提供し、例えば、ユーザが提供するキーワードに基づいて、数万通のショートメッセージから該キーワードを含むショートメッセージを検索する。
【０００４】
関連技術では、クラウドサーバは、構造化問い合わせ言語（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ、ＳＱＬ）に基づいてユーザの個人データの検索を実現する。しかしながら、ＳＱＬを拡張することが容易ではなく、特に、ユーザの数が多い場合、クラウドに記憶している個人データの合計量が非常に大きいため、この場合には、サーバの検索範囲がすべてのユーザの個人データであり、検索効率が低く、検索速度が遅く、セキュリティも悪いため、ユーザ体験が悪い。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、データの検索方法、装置及び端末を提供しており、関連技術ではサーバがユーザデータを検索するとき、検索効率が低く、検索速度が遅いという問題を解決する。
【課題を解決するための手段】
【０００６】
本発明の実施例に係る第１態様によれば、
非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取ることと、
前記第１シリアライズデータをデシリアライズ処理し、第１インデックスを得ることと、
前記第１インデックスに基づいて検索を行うことと、を含むデータの検索方法を提供している。
【０００７】
好ましくは、非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取る前、前記方法は、
第１ユーザデータ及び対応する第１ユーザ識別子を取得することと、
前記第１ユーザデータに対して第１インデックスを作成することと、
前記第１インデックスをシリアライズ処理し、第１バイナリ文字列を得ることと、
前記第１バイナリ文字列と前記第１ユーザ識別子を関連付けて前記非リレーショナルデータベースに記憶することと、を更に含み、
前記第１シリアライズデータが前記第１バイナリ文字列を含む。
【０００８】
好ましくは、前記第１インデックスに基づいて検索を行うことは、
前記第１インデックスを内部メモリに記憶することと、
内部メモリにおいて前記第１インデックスに基づいて検索を行うことと、を含む。
【０００９】
好ましくは、前記方法は、
受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正することを更に含み、前記修正要求が前記第２ユーザ識別子を含む。
【００１０】
好ましくは、前記受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正することは、
非リレーショナルデータベースから前記第２ユーザ識別子に対応する第２シリアライズデータを読み取ることと、
前記第２シリアライズデータをデシリアライズ処理し、第２インデックスを得ることと、
前記修正要求に基づいて前記第２インデックスを修正することと、
修正後の第２インデックスをシリアライズ処理し、修正後の第２シリアライズデータを得ることと、
前記非リレーショナルデータベースに記憶している第２シリアライズデータを修正後の第２シリアライズデータに更新することと、を含む。
【００１１】
好ましくは、前記修正要求に基づいて前記第２インデックスを修正することは、
前記第２インデックスを内部メモリに記憶することと、
内部メモリにおいて前記第２インデックスを修正することと、を含む。
【００１２】
本発明の実施例に係る第２態様によれば、非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取るように配置される第１読み取りモジュールと、
前記第１シリアライズデータをデシリアライズ処理し、第１インデックスを得るように配置される第１処理モジュールと、
前記第１インデックスに基づいて検索を行うように配置される検索モジュールと、を備えるデータの検索装置を提供している。
【００１３】
好ましくは、前記装置は、
第１ユーザデータ及び対応する第１ユーザ識別子を取得するように配置される取得モジュールと、
前記第１ユーザデータに対して第１インデックスを作成するように配置されるインデックス作成モジュールと、
前記第１インデックスをシリアライズ処理し、第１バイナリ文字列を得るように配置される第２処理モジュールと、
前記第１バイナリ文字列と前記第１ユーザ識別子を関連付けて前記非リレーショナルデータベースに記憶するように配置される記憶モジュールと、を更に備え、
前記第１シリアライズデータが前記第１バイナリ文字列を含む。
【００１４】
好ましくは、前記検索モジュールは、前記第１インデックスを内部メモリに記憶するように配置される第１記憶サブモジュールと、内部メモリにおいて前記第１インデックスに基づいて検索を行うように配置される検索サブモジュールと、を備える。
【００１５】
好ましくは、前記装置は、受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正するように配置される修正モジュールを更に備え、
前記修正要求が前記第２ユーザ識別子を含む。
【００１６】
好ましくは、前記修正モジュールは、
非リレーショナルデータベースから前記第２ユーザ識別子に対応する第２シリアライズデータを読み取るように配置される読み取りサブモジュールと、
前記第２シリアライズデータをデシリアライズ処理し、第２インデックスを得るように配置される第１処理サブモジュールと、
前記修正要求に基づいて前記第２インデックスを修正するように配置される修正サブモジュールと、
修正後の第２インデックスをシリアライズ処理し、修正後の第２シリアライズデータを得るように配置される第２処理サブモジュールと、
前記非リレーショナルデータベースに記憶している第２シリアライズデータを修正後の第２シリアライズデータに更新するように配置される更新サブモジュールと、を備える。
【００１７】
好ましくは、前記修正サブモジュールは、
前記第２インデックスを内部メモリに記憶するように配置される第２記憶サブモジュールと、
内部メモリにおいて前記第２インデックスを修正するように配置される修正サブモジュールと、備える。
【００１８】
本発明の実施例に係る第３態様によれば、
非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取り、
前記第１シリアライズデータをデシリアライズ処理し、第１インデックスを得て、
前記第１インデックスに基づいて検索を行うように配置されるプロセッサと、
プロセッサにより実行可能なコマンドを記憶するためのメモリと、を備えることを特徴とするサーバを提供している。
【発明の効果】
【００１９】
本発明の実施例に係る技術案は下記の有益な効果を含むことができる。
【００２０】
本発明では、サーバは、ＮｏＳＱＬデータベースからユーザ識別子に対応するシリアライズデータを読み取り、シリアライズデータをインデックスにデシリアライズし、インデックスに基づいて検索を行うことができる。検索の範囲はすべてのユーザではなく、ユーザ識別子に対応するデータに対するものであるため、検索範囲を大幅に縮小させ、それにより検索速度及び検索性能を向上させ、ユーザの体験を最適化させる。
【００２１】
本発明では、サーバは、各ユーザデータに対してインデックスをそれぞれ作成し、且つそれぞれバイナリ文字列にシリアライズし、その後、ユーザの相違に基づいて、バイナリ文字列とユーザ識別子を対応させてＮｏＳＱＬデータベースに記憶することができ、ＮｏＳＱＬデータベース自身がよい適時性及び一致性を持つため、検索の適時性及び一致性を確保し、更に、ユーザデータがＮｏＳＱＬデータベースの異なる行に記憶されているため、ユーザ識別子に対応するデータのみに対して検索を行い、ユーザデータのプライバシーを保護し、物理的にセキュリティを確保する。次に、ＮｏＳＱＬデータベースが自動的に複数の下層のコピーをバックアップするため、更に検索のセキュリティを確保し、且つ、純粋な検索の手段を用いることと比べて、ＮｏＳＱＬデータベース自身の記憶特性により、ユーザの増加に従って、増加する必要があるサーバ数を大幅に低減させる。
【００２２】
本発明では、サーバは、第１インデックスを内部メモリに記憶し、内部メモリにおいて第１インデックスに基づいて検索を行うことができる。内部メモリにおいて検索を行うことは、データ量が膨大な磁気ディスクにおいて検索を行うことに比べて、読み取り速度が大幅に向上する。
【００２３】
本発明では、サーバは、更に、インデックスを修正し、ユーザ識別子に対応するバイナリ文字列をインデックスにデシリアライズし、インデックスを修正し、且つ修正後のインデックスをバイナリ文字列にシリアライズし、且つＮｏＳＱＬデータベースに記憶しているバイナリ文字列を更新することができる。それにより、ユーザデータを増加、削除又は修正する必要がある場合、ＮｏＳＱＬデータベースに記憶されているデータを即時に更新し、検索の適時性を確保することができる。
【００２４】
本発明では、検索の速度及び性能を向上させるように、ユーザデータの修正が内部メモリにおいて行われてもよい。
【００２５】
以上の一般的な説明及び後述する詳細説明は例示的で解釈的なものに過ぎず、本発明を制限するためのものではないと理解できる。
【図面の簡単な説明】
【００２６】
ここでの図面は明細書に組み込まれて本明細書の一部をなし、本発明に適合する実施例を示し、明細書と共に本発明の原理を解釈するのに用いられる。
【００２７】
【図１】本発明の例示的な実施例に係るデータの検索方法を示すフローチャートである。
【図２】本発明の例示的な実施例に係る別のデータの検索方法を示すフローチャートである。
【図３】本発明の例示的な実施例に係るデータの検索アプリケーションシナリオを示す模式図である。
【図４】本発明の例示的な実施例に係るデータの検索装置を示すブロック図である。
【図５】本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図である。
【図６】本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図である。
【図７】本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図である。
【図８】本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図である。
【図９】本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図である。
【図１０】本発明の例示的な実施例に係るデータの検索装置に用いる構造模式図である。
【発明を実施するための形態】
【００２８】
ここで例示的な実施例について詳しく説明し、その実施例は図面に示す通りである。下記の説明が図面に関わるとき、別途に表示されない限り、異なる図面における同じ数字は同一又は類似する要素を表示する。以下の例示的な実施例に説明される実施形態は本発明と一致する全ての実施形態を表すわけではない。逆に、それらは特許請求の範囲に詳細に記載された本発明の一部の態様と一致する装置と方法の例に過ぎない。
【００２９】
本発明に使用される用語は、特定の実施例を説明するためのものに過ぎず、本発明を制限するためのものではない。本発明および特許請求の範囲で使用される単数形態の「１種」、「前記」および「当該」は、文脈に他の意味を明確に指示しない限り、複数形態を含むことを意味する。さらに、本明細書で使用される用語「および／または」は、１つ又は複数の関連する記載項目のいずれかまたはすべての可能な組み合わせを含む。
【００３０】
本発明において、用語である第１、第２、第３などを用いて種々の情報を説明する可能性があるが、これらの情報が上記の用語に限られないと理解すべきである。これらの用語は、同一種類の情報のそれぞれを区別するためのものにすぎない。例えば、本発明の範囲から逸脱しない場合、第１情報が第２情報と呼ばれてもよく、同様に、第２情報は、第１情報と呼ばれてもよい。コンテキストに依存し、例えば、ここで使用される「もし」は、「・・・・・・ときに」または「・・・・・・場合」または「・・・に応じて・・・確定する」と解釈されることができる。
【００３１】
図１に示すように、図１は例示的な実施例に係るデータの検索方法を示すフローチャートであり、該方法は、サーバに適用され、以下のステップを含む。
【００３２】
ステップ１０１では、非リレーショナルデータベースから第１ユーザ識別子と対応する第１シリアライズデータを読み取る。
【００３３】
本発明におけるサーバは、例えば、シャオミサーバ等のクラウドサーバであってもよい。本発明における端末は任意のインターネットアクセス機能を持つインテリジェント端末であってもよく、例えば、携帯電話、タブレットＰＣ、パーソナルデジタルアシスタント（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ、ＰＤＡ）等であってもよい。そのうち、端末は無線ＬＡＮを介してルータにアクセスし、且つルータを介してパブリックネットワークでのサーバへアクセスすることができる。
【００３４】
本発明に係る非リレーショナルデータベースは、非リレーショナルの構造化問い合わせ言語（Ｎｏｎ−ｒｅｌａｔｉｏｎａｌ  Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ、ＮｏＳＱＬ）データベースである。
【００３５】
ステップ１０２では、該第１シリアライズデータをデシリアライズ処理し、第１インデックスを得る。
【００３６】
シリアライズ（Ｓｅｒｉａｌｉｚａｔｉｏｎ）は直列化とも称され、ＮＥＴ実行時環境におけるユーザ定義型の流動化をサポートするためのメカニズムである。シリアライズは１つのオブジェクトをファイル又はデータベースフィールドに保存するものであり、デシリアライズ（Ｄｅｓｅｒｉａｌｉｚａｔｉｏｎ）は適切な時間でこのファイルを元のオブジェクトに変換して使用するものである。
【００３７】
ステップ１０３では、該第１インデックスに基づいて検索を行う。
【００３８】
上記実施例から分かるように、サーバは、ＮｏＳＱＬデータベースからユーザ識別子と対応するシリアライズデータを読み取り、シリアライズデータをインデックスにデシリアライズし、インデックスに基づいて検索を行うことができる。検索の範囲はすべてのユーザではなく、ユーザ識別子と対応するデータに対するものであるため、検索範囲を大幅に縮小させ、それにより検索速度及び検索性能を向上させ、ユーザの体験を最適化させる。
【００３９】
図２に示すように、図２は例示的な実施例に係るデータの検索方法を示すフローチャートであり、該方法は、サーバに適用され、以下のステップを含む。
【００４０】
本発明の実施例では、サーバは、予め各ユーザの個人データをバイナリ文字列に処理してＮｏＳＱＬデータベースに記憶することができる。
【００４１】
ステップ２０１では、第１ユーザデータ及び対応する第１ユーザ識別子を取得する。
【００４２】
本発明のステップでは、サーバが第１ユーザによりアップロードされた第１ユーザデータを受信し、又はユーザの許可を得た後、所定期間おきに端末のユーザデータをアクティブに取得することであってもよい。該第１ユーザデータは、第１ユーザのショートメッセージ、コンタクト、メール、チャットメッセージ及びピクチャ等の個人データを含んでもよい。サーバは、第１ユーザデータを受信したとき、第１ユーザ識別子を更に受信し、例えば、シャオミサーバが受信した第１ユーザ識別子は第１ユーザのシャオミアカウント情報であり、また、ユーザ識別子はユーザの携帯電話番号、端末のメディアアクセス制御（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ、ＭＡＣ）アドレス等であってもよい。
【００４３】
ステップ２０２では、第１ユーザデータに対して第１インデックスを作成する。
【００４４】
本発明のステップでは、サーバは、該第１ユーザデータを初期化し、サーチエンジン、例えばｌｕｃｅｎｅにより、該第１ユーザデータに対して第１インデックスを作成する。つまり、サーバは異なるユーザデータに対してそれぞれインデックスを作成する。
【００４５】
該インデックスには複数のファイル、例えば、インバーテッドリスト、用語集等を含んでもよい。
【００４６】
ステップ２０３では、作成された第１インデックスをシリアライズ処理し、第１バイナリ文字列を得る。
【００４７】
本発明のステップでは、サーバは、インデックスの基礎となるフォーマット、例えば１つの名称が１つのコンテンツに対応するというフォーマットに基づいて、第１インデックス、つまりインバーテッドリスト、用語集等の各ファイルを第１バイナリ文字列、例えばｘｍｌ文字列、ｊｓｏｎ文字列、バイナリストリーム等にシリアライズする。通常、該バイナリ文字列が小さく、２Ｍ以下であり、例えば数万通のショートメッセージ又は数万枚のピクチャを含むインデックスが挙げられ、このようにして、占有する磁気ディスク記憶空間が小さくなる。そのうち、シリアライズ処理は、関連技術におけるシリアライズ方法、例えばｘｍｌシリアライズ（ＸｍｌＳｅｒｉａｌｉｚａｔｉｏｎ）、バイナリシリアライズ（Ｂｉｎａｒｙ  Ｆｏｒｍａｔｔｅｒ）、Ｓｏａｐシリアライズ（Ｓｏａｐ  Ｆｏｒｍａｔｔｅｒ）等を採用してもよい。
【００４８】
ステップ２０４では、該第１バイナリ文字列と第１ユーザ識別子を関連付けてＮｏＳＱＬデータベースに記憶する。
【００４９】
本発明のステップでは、サーバは、各ユーザのユーザ識別子とバイナリ文字列を対応させてＮｏＳＱＬデータベース、例えば、Ｃａｓｓｓａｎｄｒａ、Ｌｕｃｅｎｅ／Ｓｏｌｒ、ＢｉｇＴａｂｌｅ／  Ａｃｃｕｍｕｌｏ／  Ｈｙｐｅｒｔａｂｌｅ等のデータベースに記憶する。
【００５０】
つまり、本発明のステップでは、サーバは異なるユーザのバイナリ文字列をＮｏＳＱＬの異なる行（Ｒｏｗ）に記憶し、各ユーザのバイナリ文字列が物理的に分離しているため、ユーザのプライバシーの保護に有利であり、セキュリティが高くなる。その後、サーバがユーザの検索要求を受信したとき、上記ＮｏＳＱＬデータベースに記憶しているインデックスに基づいて検索を行う。
【００５１】
ステップ２０５では、ＮｏＳＱＬデータベースから第１ユーザ識別子と対応する第１バイナリ文字列を読み取る。
【００５２】
本発明の実施例では、サーバは、第１ユーザにより入力された、検索条件を有する検索要求を受信した場合、検索要求から該第１ユーザの第１ユーザ識別子を抽出し、且つ第１ユーザ識別子に基づいてＮｏＳＱＬデータベースから対応する第１シリアライズデータを検索して読み取り、該シリアライズデータがバイナリ文字列であってもよい。
【００５３】
ステップ２０６では、該第１バイナリ文字列をデシリアライズ処理し、第１インデックスを得る。
【００５４】
本発明のステップでは、サーバに対して、ただデシリアライズされたファイルだけは、読み出し可能なファイルであり、後続の検索ステップを実行できるため、サーバが第１バイナリ文字列をデシリアライズして得た第１インデックスは、該第１ユーザの個人データの複数のファイルと対応する。
【００５５】
そのうち、ＮｏＳＱＬデータベースがサーバの磁気ディスクに位置するため、サーバは、第１バイナリ文字列を磁気ディスクから内部メモリに読み取って記憶し、その後、内部メモリにおいて該第１バイナリ文字列をデシリアライズ処理して、第１インデックスを得ることができる。
【００５６】
ステップ２０７では、該第１インデックスに基づいて検索を行う。
【００５７】
本発明のステップでは、内部メモリにおいて第１インデックスを得た後、検索条件及び第１インデックスに基づいて様々な検索操作を行うことができる。
【００５８】
内部メモリの記憶スペースは大きく、単一のユーザのインデックスが占有するスペーサは小さいため、該ユーザのインデックスを内部メモリに記憶し、内部メモリにおいて検索を行う。このよう方式は、データ量が膨大な磁気ディスクにおいて検索を行うことに比べて、読み取り速度が大幅に向上する。且つ、内部メモリに対して読み取り操作のみを行うため、検索が終了した後、直ちに占有する内部メモリスペースを解放する。
【００５９】
関連技術では、サーバはすべてのユーザのユーザデータに対してインデックスを生成し、且つすべてのインデックスをサーバディスクに記憶し、データの量が非常に大きく、数十Ｇに達し、ディスクを開く及びディスクを読み取る速度が非常に遅いため、検索速度が遅すぎ、検索性能が悪く、ユーザのニーズを満たすことができない。本発明の実施例では、各ユーザのユーザデータに対してインデックスをそれぞれ生成し、且つ各インデックスに対応するバイナリ文字列とユーザ識別子を対応させて記憶し、このようにして、あるユーザのデータを検索する場合、ユーザ識別子に基づいて対応するインデックスに対して検索を行わればよく、それにより、検索範囲を大幅に縮小させ、検索速度を向上させる。
【００６０】
本発明の実施例では、ユーザが新しいユーザデータをアップロードし、又はユーザデータを修正、削除したとき、サーバはインデックスを修正する必要があり、この場合、本発明の実施例は、下記のステップを更に含んでもよい。
【００６１】
ステップ２０８では、受信したユーザの修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正する。
【００６２】
本発明のステップでは、サーバは、修正要求における第２ユーザ識別子を取得して、第２ユーザ識別子に基づいて対応する第２バイナリ文字列を読み取り、その後、第２バイナリ文字列を磁気ディスクから内部メモリに読み取り、デシリアライズ処理を行い、該第２ユーザ識別子に対応する第２インデックスを得て、その後、内部メモリにおいて修正要求に基づいて第２インデックスを修正し、最後修正後の第２インデックスをバイナリ文字列にシリアライズして、ＮｏＳＱＬデータベースに記憶し、つまり、ＮｏＳＱＬデータベースに記憶している第２バイナリ文字列を修正後の第２インデックスと対応するバイナリ文字列に更新する。
【００６３】
本発明の上記実施例では、それぞれのユーザのインデックスが独立したものであるため、検索範囲は狙いがはっきりしており、検索性能を確保することができる。従って、１台のサーバがどのぐらいのユーザのデータを記憶できるかは、ＮｏＳＱＬの記憶サイズに依存する。例えば、各ユーザのインデックスが２Ｍであり、サーバの磁気ディスクスペースが１００Ｇであると、１台のサーバは約１００Ｇ／２Ｍ  ＝  ５万のユーザをサービスすることができる。関連技術における例えばｌｕｃｅｎｅに基づく純粋な検索の検索方法を採用すれば、５万のユーザのインデックスを１００Ｇの磁気ディスクスペースに保存することができるが、検索範囲はすべてのユーザのデータであるため、検索性能が悪く、検索遅延が大きく、検索性能を確保するために、サーバが記憶するユーザのデータ量を削減する必要があり、従って、５万のユーザのデータを記憶することができず、実際には、１万のユーザのデータのみを記憶できる可能性がある。本発明は、検索の範囲がすべてのユーザに対するものではないため、検索性能が向上し、同一のサーバに対して、本発明の解決手段はより多くのユーザのデータを記憶することができるため、本発明の解決手段に使用する合計サーバの数も関連技術において使用するサーバの数より少ない。
【００６４】
図３に示すように、図３は本発明の例示的な実施例に係るデータの検索アプリケーションシナリオを示す模式図である。図３に示すシナリオでは、サーバ及びスマートフォンを含む。
【００６５】
サーバは、スマートフォンからのユーザの検索要求を受信し、該検索要求には検索条件及び該ユーザのユーザ識別子が備えられ、サーバは、該ユーザ識別子に基づいて、ＮｏＳＱＬデータベースから該ユーザ識別子に対応するバイナリ文字列を読み取り、その後、サーバは、読み取られたバイナリ文字列をデシリアライズ処理し、該ユーザ識別子に対応するインデックスを得て、サーバは該インデックスを内部メモリに読み取り、その後、該インデックス及び検索条件に基づいて検索を行う。
【００６６】
図３に示すアプリケーションシナリオでは、データの検索を実現する過程は、図１及び図２に対する記述を参照し、ここでは繰り返して説明しない。
【００６７】
上記データの検索方法の実施例に対応して、本発明は、データの検索装置及びそれが適用されるサーバの実施例を更に提供する。
【００６８】
図４に示すように、図４は本発明の例示的な実施例に係るデータの検索装置を示すブロック図であり、該装置は、第１読み取りモジュール４１０、第１処理モジュール４２０及び検索モジュール４３０を備えてもよい。
【００６９】
そのうち、第１読み取りモジュール４１０は、ＮｏＳＱＬデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取るように配置され、
第１処理モジュール４２０は、第１読み取りモジュール４１０により読み取られた第１シリアライズデータをデシリアライズ処理し、第１インデックスを得るように配置され、
検索モジュール４３０は、第１処理モジュール４２０により処理された第１インデックスに基づいて検索を行うように配置される。
【００７０】
上記実施例では、サーバは、ＮｏＳＱＬデータベースからユーザ識別子に対応するシリアライズデータを読み取り、シリアライズデータをインデックスにデシリアライズし、インデックスに基づいて検索を行うことができる。検索の範囲はすべてのユーザではなく、ユーザ識別子に対応するデータに対するものであるため、検索範囲を大幅に縮小させ、それにより検索速度及び検索性能を向上させ、ユーザの体験を最適化させる。
【００７１】
図５に示すように、図５は本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図であり、該実施例は、図４に示す実施例に基づくものであり、該装置は、取得モジュール４４０、インデックス作成モジュール４５０、第２処理モジュール４６０及び記憶モジュール４７０を更に備えてもよい。
【００７２】
そのうち、取得モジュール４４０は、第１ユーザデータ及び対応する第１ユーザ識別子を取得するように配置され、
インデックス作成モジュール４５０は、取得モジュール４４０により取得された第１ユーザデータに対してインデックスを作成するように配置され、
第２処理モジュール４６０は、インデックス作成モジュール４５０により作成されたインデックスをシリアライズ処理し、バイナリ文字列を得るように配置され、
記憶モジュール４７０は、第２処理モジュール４６０により処理されたバイナリ文字列と第１ユーザ識別子を関連付けてＮｏＳＱＬデータベースに記憶し、該第１シリアライズデータがバイナリ文字列を含むように配置される。
【００７３】
上記実施例では、サーバは、各ユーザデータに対してインデックスをそれぞれ作成し、且つ、それぞれバイナリ文字列にシリアライズし、その後、ユーザの相違に基づいて、バイナリ文字列とユーザ識別子を対応させてＮｏＳＱＬデータベースに記憶し、ＮｏＳＱＬデータベースそのものがよい適時性及び一致性を持つため、検索の適時性及び一致性を確保し、更に、ユーザデータがＮｏＳＱＬデータベースの異なる行に記憶されているため、ユーザ識別子に対応するデータのみに対して検索を行い、ユーザデータのプライバシーを保護し、物理的にセキュリティを確保する。次に、ＮｏＳＱＬデータベースが自動的に複数の下層のコピーをバックアップするため、更に検索のセキュリティを確保し、且つ、純粋な検索手段を用いることと比べて、ＮｏＳＱＬデータベース自身の記憶特性により、ユーザの増加に従って、増加する必要があるサーバ数を大幅に低減させる。
【００７４】
図６に示すように、図６は本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図であり、該実施例は、図４に示す実施例に基づくものであり、該検索モジュール４３０は、第１記憶サブモジュール４３１及び検索サブモジュール４３２を更に備えてもよい。
【００７５】
そのうち、第１記憶サブモジュール４３１は、第１インデックスを内部メモリに記憶するように配置され、
検索サブモジュール４３２は、内部メモリにおいて第１記憶サブモジュール４３１により記憶された第１インデックスに基づいて検索を行うように配置される。
【００７６】
上記実施例では、第１インデックスを内部メモリに記憶し、内部メモリにおいて第１インデックスに基づいて検索を行うことができる。内部メモリにおいて検索を行うことは、データ量が膨大な磁気ディスクにおいて検索を行うことに比べて、読み取り速度が大幅に向上する。
【００７７】
図７に示すように、図７は本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図であり、該実施例は図４に示す実施例に基づくものであり、該装置は、修正モジュール４８０を更に備えてもよい。
【００７８】
そのうち、修正モジュール４８０は、受信した修正要求に応答して、第２ユーザ識別子に対応する第２インデックスを修正し、該修正要求が第２ユーザ識別子を含むように配置される。
【００７９】
図８に示すように、図８は本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図あり、該実施例は図７の実施例に示す実施例に基づくものであり、該修正モジュール４８０は、読み取りサブモジュール４８１、第１処理サブモジュール４８２、修正サブモジュール４８３、第２処理サブモジュール４８４及び更新サブモジュール４８５を備えてもよい。
【００８０】
そのうち、読み取りサブモジュール４８１は、ＮｏＳＱＬデータベースから第２ユーザ識別子に対応する第２シリアライズデータを読み取るように配置され、
第１処理サブモジュール４８２は、読み取りサブモジュール４８１により読み取られた第２シリアライズデータをデシリアライズ処理し、第２インデックスを得るように配置され、
修正サブモジュール４８３は、修正要求に基づいて第１処理サブモジュール４８２により処理された第２インデックスを修正するように配置され、
第２処理サブモジュール４８４は、修正サブモジュール４８３により修正された第２インデックスをシリアライズ処理し、修正した第２シリアライズデータを得るように配置され、
更新サブモジュール４８５は、ＮｏＳＱＬデータベースに記憶している第２シリアライズデータを、修正後の第２シリアライズデータに更新するように配置される。
【００８１】
上記実施例では、サーバは、更に、インデックスを修正し、ユーザ識別子に対応するバイナリ文字列をインデックスにデシリアライズし、インデックスを修正し、且つ修正後のインデックスをバイナリ文字列にシリアライズし、ＮｏＳＱＬデータベースに記憶しているバイナリ文字列を更新することができる。それにより、ユーザデータを増加、削除又は修正する必要がある場合、ＮｏＳＱＬデータベースにおいて記憶されているデータを即時に更新し、検索の適時性を確保することができる。
【００８２】
図９に示すように、図９は本発明の例示的な実施例に係る別のデータの検索装置を示すブロック図であり、該実施例は図８に示す実施例に基づくものであり、修正サブモジュール４８３は、第２記憶サブモジュール４８６及び修正サブモジュール４８７を更に備えてもよい。
【００８３】
そのうち、第２記憶サブモジュール４８６は、第２インデックスを内部メモリに記憶するように配置され、
修正サブモジュール４８７は、内部メモリにおいて第２記憶サブモジュール４８６により記憶された第２インデックスを修正するように配置される。
【００８４】
上記実施例では、検索の速度及び性能を向上させるように、ユーザデータの修正が内部メモリにおいて行われてもよい。
【００８５】
上記図４〜図９に示したデータの検索装置の実施例はサーバに適用される。
【００８６】
上記装置におけるそれぞれのユニットの機能及び作用の実現過程は、具体的には上記方法における対応するステップの実現過程を参照し、ここでは繰り返して説明しない。
【００８７】
装置の実施例は基本的に方法の実施例に対応するため、関連部分が方法の実施例の部分の説明を参照すればよい。以上説明した装置の実施例は例示的なものに過ぎず、そのうち、分離部材として説明されたユニットが物理的に分離するものであってもよく、または物理的に分離するものではなくてもよく、ユニットとして表示された部材が物理ユニットであってもよく、物理ユニットではなくてもよく、すなわち１つの位置に位置してもよく、または複数のネットワークユニットに分布してもよい。実際の必要に応じてそのうちの一部または全部のモジュールを選択して本発明の解決手段の目的を達成することができる。当業者は、創造的な労力を要さない場合、理解して実施することができる。
【００８８】
それに対応して、本発明はサーバを更に提供し、サーバは、プロセッサと、プロセッサにより実行可能なコマンドを記憶するためのメモリと、を備え、上記プロセッサは、非リレーショナルデータベースから第１ユーザ識別子に対応する第１シリアライズデータを読み取り、第１シリアライズデータをデシリアライズ処理し、第１インデックスを得て、第１インデックスに基づいて検索を行うように配置される。
【００８９】
図１０に示すように、図１０は例示的な実施例に係るデータの検索装置１０００を示す構造模式図である。例えば、装置１０００はサーバとして提供されてもよい。図１０を参照し、装置１０００は、処理部材１０２２を備え、１つ又は複数のプロセッサ及びメモリ１０３２を代表とするメモリリソースを更に備え、メモリリソースは処理部材１０２２により実行されるコマンド、例えばアプリケーションプログラムを記憶するためのものである。メモリ１０３２に記憶されているアプリケーションプログラムは１つ又は１つ以上の、一連のコマンドに対応する各々のモジュールを備えてもよい。また、処理部材１０２２は、上記ウェブページのアクセス方法を実行するように、コマンドを実行するように配置される。
【００９０】
装置１０００は、装置１０００の電源管理を実行するように配置される１つの電源部材１０２６、装置１０００をネットワークに接続するように配置される１つの有線又は無線ネットワークインターフェース１０５０、及び１つの入力出力（Ｉ／Ｏ）インターフェース１０５８を更に備える。装置１０００はメモリ１０３２に記憶されているオペレーティングシステム、例えばＷｉｎｄｏｗｓ  ＳｅｒｖｅｒＴＭ、ＭａｃＯＳＸＴＭ、ＵｎｉｘＴＭ、ＬｉｎｕｘＴＭ、ＦｒｅｅＢＳＤＴＭ又は類似なものに基づいて操作されてもよい。
【００９１】
当業者は、明細書を考慮しここに開示された発明を実践した後、本発明のその他の実施態様を容易に想到できる。本発明は、本発明の如何なる変形、用途又は適応的変化を含むためのものであり、これらの変形、用途又は適応的変化は本発明の一般的な原理に準じ、本発明の開示されていない本技術分野における公知知識又は慣用の技術手段を含む。明細書と実施例は例示的なものに過ぎず、本発明の実際の範囲と精神は特許請求範囲により与えられる。
【００９２】
理解すべきことは、本発明は既に上記のように説明され、図面に示された正確な構造に限定されず、その範囲を逸脱しない限りにおいて様々な修正や変更を行うことができる。本発明の範囲は特許請求の範囲のみにより限定される。
【図１】
0006383110.tif 000002
【図２】
0006383110.tif 000003
【図３】
0006383110.tif 000004
【図４】
0006383110.tif 000005
【図５】
0006383110.tif 000006
【図６】
0006383110.tif 000007
【図７】
0006383110.tif 000008
【図８】
0006383110.tif 000009
【図９】
0006383110.tif 000010
【図１０】
0006383110.tif 000011