(57)【特許請求の範囲】
【請求項１】
オートコンプリートを実行するためのシステムであって、
１または複数のプロセッサであって、
サーバへの要求の送信を制御するように構成されているステータスロックを生成し、
ユーザ入力文字を含む第１のサジェスト要求を生成し、
待ち行列が空であるか否か判断し、
前記待ち行列が空であると判断した場合には、
前記ステータスロックが利用可能であるという表示に応答して、前記第１のサジェスト要求のための前記ステータスロックを取得し、前記第１のサジェスト要求を前記サーバに送信し、
前記待ち行列が空でないと判断した場合には、
前記待ち行列に記憶されている１つまたは複数の文字および前記第１のサジェスト要求に含まれる前記ユーザ入力文字に少なくとも一部基づいて第２のサジェスト要求を生成し、
前記ステータスロックが利用可能であるという表示に応答して、前記第２のサジェスト要求のための前記ステータスロックを取得し、前記第２のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアし、    
前記サーバからの前記文字に対応するサジェストコンテンツの受信に応答して、前記ステータスロックを解除するように構成されている、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１つまたは複数のプロセッサに命令を提供するように構成されている１または複数のメモリを備える
システム。
【請求項２】
前記１つまたは複数のプロセッサは、さらに、前記待ち行列を生成するように構成されている請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のプロセッサは、さらに、
前記ステータスロックが利用可能でないという表示に応答して、前記文字を前記待ち行列に記憶し、
予め設定された待機期間が経過しているか判断し、
前記予め設定された待機期間が経過しているという判断に応答して、
前記待ち行列に記憶されている前記文字を含む第３のサジェスト要求を生成し、
前記第３のサジェスト要求のための前記ステータスロックを取得して、前記第３のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアするように構成されている請求項２に記載のシステム。
【請求項４】
前記待ち行列に記憶されている前記１つまたは複数の文字および前記第１のサジェスト要求に含まれる前記ユーザ入力文字に少なくとも一部基づいて前記第２のサジェスト要求を生成することは、
前記待ち行列から前記１つまたは複数の文字を抽出し、
前記抽出された１つまたは複数の文字を、前記第１のサジェスト要求に含まれる前記ユーザ入力文字に関連付けられている前記文字と組み合わせて、文字列を形成し、
前記文字列を含むように前記第２のサジェスト要求を生成する
ことを含む請求項１に記載のシステム。
【請求項５】
前記サジェストコンテンツは、予測される１組の１つまたは複数の文字と、予め記憶されている１組の１つまたは複数の文字と、１組の１つまたは複数の文字に関連付けられている訂正されたスペリングとの１または複数を備える請求項１に記載のシステム。
【請求項６】
前記１つまたは複数のプロセッサは、さらに、前記サジェストコンテンツを表示するように構成されている請求項１に記載のシステム。
【請求項７】
前記１つまたは複数のプロセッサは、さらに、前記サジェストコンテンツを表示する前に、前記サジェストコンテンツに対するフィルタリングを行うように構成されている請求項６に記載のシステム。
【請求項８】
前記サジェストコンテンツに対するフィルタリングを行うことは、ある文字を削除するという選択の受信に対応する前記サジェストコンテンツの一部の削除を含む請求項７に記載のシステム。
【請求項９】
オートコンプリートを実施するための方法であって、
サーバへの要求の送信を制御するように構成されているステータスロックを生成し、
ユーザ入力文字を含む第１のサジェスト要求を生成し、
待ち行列が空であるか否か判断し、
前記待ち行列が空であると判断した場合には、
前記ステータスロックが利用可能であるという表示に応答して、前記第１のサジェスト要求のための前記ステータスロックを取得して、前記第１のサジェスト要求を前記サーバに送信し、
前記待ち行列が空でないと判断した場合には、
前記待ち行列に記憶されている１つまたは複数の文字および前記第１のサジェスト要求に含まれる前記ユーザ入力文字に少なくとも一部基づいて第２のサジェスト要求を生成し、
前記ステータスロックが利用可能であるという表示に応答して、前記第２のサジェスト要求のための前記ステータスロックを取得して、前記第２のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアし、
前記サーバからの前記文字に対応するサジェストコンテンツの受信に応答して、前記ステータスロックを解除すること
を備える方法。
【請求項１０】
さらに、前記待ち行列を生成することを備える請求項９に記載の方法。
【請求項１１】
さらに、前記ステータスロックが利用可能でないという表示に応答して、前記文字を前記待ち行列に記憶し、
予め設定された待機期間が経過しているか判断し、
前記予め設定された待機期間が経過しているという判断に応答して、前記待ち行列に記憶されている前記文字を含む第３のサジェスト要求を生成し、
前記第３のサジェスト要求のための前記ステータスロックを取得して、前記第３のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアすること
を備える請求項１０に記載の方法。
【請求項１２】
前記待ち行列に記憶されている前記１つまたは複数の文字および前記第１のサジェスト要求に含まれる前記ユーザ入力文字に少なくとも一部基づいて前記第２のサジェスト要求を生成することは、
前記待ち行列から前記１つまたは複数の文字を抽出し、
前記抽出された１つまたは複数の文字を、前記第１のサジェスト要求に含まれる前記ユーザ入力文字に関連付けられている前記文字と組み合わせて、文字列を形成し、
前記文字列を含むように前記第２のサジェスト要求を生成すること
を備える請求項９に記載の方法。
【請求項１３】
前記サジェストコンテンツは、予測される１組の１つまたは複数の文字と、予め記憶されている１組の１つまたは複数の文字と、１組の１つまたは複数の文字に関連付けられる訂正されたスペリングとの１または複数を備える請求項９に記載の方法。
【請求項１４】
さらに、前記サジェストコンテンツを表示することを備える請求項９に記載の方法。
【請求項１５】
さらに、前記サジェストコンテンツを表示する前に、前記サジェストコンテンツに対するフィルタリングを行うことを備える請求項１４に記載の方法。
【請求項１６】
前記サジェストコンテンツに対するフィルタリングを行うことは、ある文字を削除するという選択の受信に対応する前記サジェストコンテンツの一部の削除を含む請求項１５に記載の方法。
【請求項１７】
オートコンプリートを実施するためのコンピュータプログラムであって、
サーバへの要求の送信を制御するように構成されているステータスロックを生成するための機能と、
ユーザ入力文字を含む第１のサジェスト要求を生成するための機能と、
待ち行列が空であるか否か判断する機能と、
前記待ち行列が空であると判断された場合に、
前記ステータスロックが利用可能であるという標示に応答して、前記第１のサジェスト要求のための前記ステータスロックを取得して、前記第１のサジェスト要求を前記サーバに送信するための機能と、
前記待ち行列が空でないと判断された場合に、
前記待ち行列に記憶されている１つまたは複数の文字および前記第１のサジェスト要求に含まれる前記ユーザ入力文字に少なくとも一部基づいて第２のサジェスト要求を生成する機能と、
前記ステータスロックが利用可能であるという表示に応答して、前記第２のサジェスト要求のための前記ステータスロックを取得して、前記第２のサジェスト要求を前記サーバに送信する機能と、
前記待ち行列をクリアする機能と、
前記サーバからの前記文字に対応するサジェストコンテンツの受信に応答して、前記ステータスロックを解除するための機能と
をコンピュータによって実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、全ての目的のために参照により本明細書に組み込まれる発明の名称を「Ａ  ＭＥＴＨＯＤ，  ＤＥＶＩＣＥ  ＡＮＤ  ＳＥＲＶＥＲ  ＦＯＲ  ＡＵＴＯＣＯＭＰＬＥＴＥ  ＣＯＮＴＥＮＴ  ＥＮＴＲＹ  ＩＮ  ＨＡＮＤＨＥＬＤ  ＥＱＵＩＰＭＥＮＴ」とする２０１２年４月２８日出願の中華人民共和国特許出願第２０１２１０１３２８５２．７号に基づく優先権を主張する。
【０００２】
本出願は、ネットワーク技術に関する。特に、本出願は、コンテンツのオートコンプリートのための技法に関する。
【背景技術】
【０００３】
モバイルデバイスは、インターネットを介してユーザにネットワークサービスを提供することができる。時として、ユーザが、モバイルデバイス上のインターネットアプリケーション（例えばサーチエンジン）を介してサーチまたはクエリを行うとき、モバイルデバイスに関連付けられているオートコンプリート機能が、ユーザ入力文字に基づいてサジェスト要求を生成し、それらをサーバに送信する。サジェスト要求を受信した後、サーバは、入力された文字に関係付けられているサジェストコンテンツを返信する。例えば、サーバから受信されたサジェストコンテンツを表示するモバイルデバイスのスクリーン上にサジェストボックスが現れることがある。第１の例では、サーチを行うためにモバイルデバイス上でアプリケーションを使用するとき、ユーザが文字「中［ｚｈｏｎｇ］」を入力した場合に、「中国［Ｚｈｏｎｇｇｕｏ］」や「中央［ｚｈｏｎｇｙａｎｇ］」など一般的なサジェスト候補がサジェストボックスに現れることがある。第２の例では、ユーザは、文字を入力することによって、連絡先情報が記憶されているユーザに関連付けられる情報を検索することができる。ユーザは、「ｚ」などピンイン（漢字のローマ字化）の一部を入力することができ、すると、サジェストボックスに現れるサジェストコンテンツは、ピンインが「ｚ」から始まる文字、例えば「Ｃ１［Ｚｈａｎｇ］」を含む。以下、簡体字は「Ｃ＋番号」で表し、明細書の末尾に対照表を付す。
【０００４】
時として、オートコンプリート技法は、適切に動作できるように、ネットワークを介するサーバとの通信に依拠する。しかし、モバイルデバイスによって検出されるネットワーク信号は、ユーザがいる場所により異なることがある。その結果、モバイルデバイス上のアプリケーションにユーザが文字を入力することができる速度は、モバイルデバイスがサーバとデータを送受信することができる速度を上回ることがあり、これは、モバイルデバイスにサジェストコンテンツを返す際の遅延を生じることがある。特定のユーザ入力文字に関して返されるサジェストコンテンツをモバイルデバイスが待機している間に、ユーザがさらなる文字を入力していることがある。そのような状況では、サーバから最終的に返されるサジェストコンテンツの多くの例は、全て一度に、それらがモバイルデバイスに到達するように意図された順序でないことがあり、または、後に入力された文字に関するサジェストコンテンツが、先に入力された文字に関するサジェストコンテンツが受信される前にモバイルデバイスで受信されることがある。そのような挙動は、サジェストコンテンツを無秩序をもたらし、全体的なユーザエクスペリエンスを低下させることがある。
【０００５】
例えば、モバイルデバイスを使用しているユーザが、アプリケーションＡで、別のユーザ「王菲［Ｗａｎｇ  Ｆｅｉ］」に関する情報を検索したいとする。従来、ユーザが第１の文字「ｗ」を入力すると、例えば「王［Ｗａｎｇ］」や「汪［Ｗａｎｇ］」など、同じピンインを有する個々の文字のサジェスト候補がサーバから返信される。ユーザが第２の文字「ｆ」を入力すると、第１の文字「ｗ」との関連付けが成されることがあり、１組の文字「王菲［Ｗａｎｇ  Ｆｅｉ］」のサジェスト候補が返信される。この時点で、ユーザは、他のユーザの名前および他の記憶されている情報を迅速に見つけることができる。
【０００６】
しかし、モバイルデバイスによって検出されるネットワーク信号が弱い（例えば、ユーザが電車に乗っており、電車がトンネル内を通過しており、したがってモバイルデバイスによって検出される信号がトンネルによって妨げられる）と仮定する。検出される信号が弱い（または存在しない）ときに、モバイル上で動作するアプリケーションにユーザが第１の文字「ｗ」を入力すると仮定する。この時点で、ユーザは依然としてトンネル内を走る電車に乗っているので、ネットワーク信号は弱く、したがってサジェスト要求がサーバに送信されないか、またはサーバによって送信されたサジェストコンテンツをモバイルデバイスで受信することができない。その後、電車が既にトンネルから出てネットワーク信号が再び強くなったときにアプリケーションに第２の文字「ｆ」が入力され、モバイルデバイスに返されるサジェストコンテンツは、個々の文字「Ｃ２［Ｆｅｉ］」や「范［Ｆａｎ］」を含むことがあり、これらは全て第２の入力文字「ｆ」に基づく。サーバは、いずれ第１の入力文字「ｗ」の再送信を受信することがあるが、それが「ｆ」の後に入力されたものと仮定して、サジェストコンテンツとして１組の文字「范Ｃ３［Ｆａｎ  Ｗｅｉ］」を返すことがある。これは、文字「ｗ」が文字「ｆ」の後に入力されたという誤った仮定に基づく。したがって、弱いネットワーク信号が生じる可能性により、オートコンプリートが機能する様式が乱れることがあり、低品質のサジェストコンテンツがサーバから送信されることがある。
【０００７】
本発明の様々な実施形態を、以下の詳細な説明および添付図面で開示する。
【図面の簡単な説明】
【０００８】
【図１】コンテンツのオートコンプリートを実施するためのシステムの一実施形態を示す図である。
【０００９】
【図２Ａ】コンテンツのオートコンプリートを実施するためのプロセスの一実施形態を示すフローチャートである。
【００１０】
【図２Ｂ】待ち行列を使用するプロセスの一実施形態を示すフローチャートである。
【００１１】
【図３Ａ】コンテンツのオートコンプリートと共に待ち行列を使用するためのプロセスの一実施形態を示すフローチャートである。
【００１２】
【図３Ｂ】待ち行列から抽出された文字を含むサジェスト要求を生成するプロセスの一実施形態を示すフローチャートである。
【００１３】
【図４】待ち行列に記憶されている１つまたは複数の文字をサーバに送信するために予め設定された待機期間を使用するプロセスの一実施形態を示すフローチャートである。
【００１４】
【図５】コンテンツのオートコンプリートを実施するためのプロセスの一実施形態を示すフローチャートである。
【００１５】
【図６】コンテンツのオートコンプリートを実施するためのプロセスの一実施形態を示すフローチャートである。
【００１６】
【図７】コンテンツのオートコンプリートを実施するためのシステムの一実施形態を示す図である。
【００１７】
【図８】コンテンツのオートコンプリートを実施するためのシステムの一実施形態を示す図である。
【発明を実施するための形態】
【００１８】
本発明は、プロセス、装置、システム、物質の組成、コンピュータ可読記憶媒体上で具現化されるコンピュータプログラム製品、および／またはプロセッサ、例えばそこに接続されているメモリに記憶されている命令および／またはメモリによって提供される命令を実行するように構成されたプロセッサとしての形態を含めた多くの形態で実装することができる。本明細書では、これらの実装形態、または本発明が取ることができる任意の他の形態を、技法と呼ぶことがある。一般に、開示するプロセスのステップの順序は、本発明の範囲内で変更することができる。特に指示のない限り、タスクを実施するように構成されているものとして述べるプロセッサまたはメモリなどの構成要素は、所与の時間にタスクを実施するように一時的に構成された汎用構成要素、またはタスクを実施するように製造された専用構成要素として実装することができる。本明細書で使用するとき、用語「プロセッサ」は、コンピュータプログラム命令などのデータを処理するように構成された１つまたは複数のデバイス、回路、および／または処理コアを表す。
【００１９】
以下、本発明の原理を例示する添付図面と共に、本発明の１つまたは複数の実施形態の詳細な説明を行う。そのような実施形態に関連付けて本発明を説明するが、本発明は、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲のみによって限定され、本発明は、多数の変形形態、修正形態、および均等形態を包含する。本発明を完全に理解できるように、以下の説明では多くの具体的な詳細を述べる。これらの詳細は例示の目的で提供されるものであり、本発明は、これらの具体的な詳細のいくつかまたは全てを含まなくても、特許請求の範囲に従って実施することができる。分かりやすくするために、本発明を不要に曖昧にしないように、本発明に関係する技術分野における既知の技術要素は詳細には説明していない。
【００２０】
本明細書では、コンテンツのオートコンプリートを実施する実施形態を述べる。様々な実施形態において、文字（または１組の文字）のユーザ入力に応答して、クライアントデバイスでサジェスト要求が生成され、次いでサーバに送信される。サーバは、サジェスト要求を処理し、サジェスト要求に関連付けられる文字に基づいて、（いくつかの実施形態では、他の文脈情報に加えて）サジェストコンテンツを返す。様々な実施形態において、ユーザが入力した文字それぞれに関するサジェストコンテンツが、それらの文字がクライアントデバイスで入力ボックスに現れるのと同じシーケンスでサーバによって生成されることを保証するために、ロッキングメカニズムが使用される。その結果、サーバは、ユーザが入力した文字のシーケンス通りのサジェストコンテンツを返す。ユーザ入力文字を正しいシーケンスで処理することによって、サーバは、（例えば先に入力された文字に基づいて）後に入力された文字に関連付けられる適切な文脈情報を検討することが可能であり、および／または、乱れたシーケンスでクライアントデバイスに到着し、対応するユーザ入力文字に明確には関連付けられないサジェストコンテンツの送信を避けることが可能である。
【００２１】
図１は、コンテンツのオートコンプリートを実施するためのシステムの一実施形態を示す図である。この例では、システム１００は、クライアントデバイス１０２と、ネットワーク１０４と、サーバ１０６と、データベース１０８とを含む。
【００２２】
クライアントデバイス１０２は、ネットワーク１０４を介してサーバ１０６と通信するように構成されている。クライアントデバイス１０２は、スマートフォンとして図示されているが、クライアントデバイス１０２の他の例として、ラップトップコンピュータ、デスクトップコンピュータ、モバイルデバイス、タブレットデバイス、および／または任意の他の計算デバイスが挙げられる。クライアントデバイス１０２は、ユーザが文字を入力することができる入力インターフェース（例えば物理的なキーボードまたはタッチスクリーン）を含み、また、ユーザのために情報を表示することができるディスプレイインターフェースも含む。様々な実施形態において、クライアントデバイス１０２は、クライアントデバイス１０２でコンテンツのオートコンプリートを実施するためにサーバ１０６と通信するように構成される。様々な実施形態において、コンテンツのオートコンプリートとは、ユーザが既に入力しているコンテンツに基づいて、ユーザが入力したい文字および／または単語を予測することを表す。様々な実施形態において、クライアントデバイス１０２にインストールされているいくつかのアプリケーション（例えば、サーチエンジン、テキストエディタ、ウェブブラウザ、電子メールプログラム）は、ユーザが文字／単語を入力することができる入力ボックスまたはフィールドを含む。ユーザが入力した文字（または単語や語句など１組の文字）に応答して、クライアントデバイス１０２上で動作しているオートコンプリート機能を備えるアプリケーションは、入力された文字をパスパラメータとして含むサジェスト要求を生成する。より詳細には後述するように、サジェスト要求内のパスパラメータは、サーバ１０６によって抽出および処理されるパラメータである。様々な実施形態において、クライアントデバイス１０２でステータスロックが生成され、これを使用して、サジェスト要求をサーバ１０６に送信することができる時を制御する。様々な実施形態において、クライアントデバイス１０２で生成されるサジェスト要求は、ステータスロックがそのサジェスト要求のために取得されているときにのみ、サーバ１０６に送信される。様々な実施形態において、一度に１つのサジェスト要求のみがステータスロックを取得することができる。あるサジェスト要求がステータスロックを取得することが可能であるとき、そのサジェスト要求が、クライアントデバイス１０２からサーバ１０６に送信される。
【００２３】
サーバ１０６は、クライアントデバイス１０２などのクライアントデバイスからサジェスト要求を受信するように構成されている。受信されたサジェスト要求に関して、サーバ１０６は、サジェスト要求のパスパラメータから文字（または１組の文字）を抽出し、抽出された文字に対応するサジェストコンテンツを決定するように構成されている。サーバ１０６は、抽出された文字に対応するサジェストコンテンツを決定するために、データベース１０８に記憶されているデータを使用することができる。例えば、データベース１０８は、１人または複数のユーザが以前に入力した文字に関連付けられている履歴データ、一般的な単語または語句、１人または複数のユーザのために特別に記憶されている情報、および／またはオートコンプリートに使用される他の技法を記憶することができる。サーバ１０６は、抽出された文字に関する適切なサジェストコンテンツを決定すると、サジェストコンテンツをクライアントデバイス１０２に返信するように構成され、クライアントデバイス１０２上で動作しているオートコンプリート機能を備えるアプリケーションが、少なくともサジェストコンテンツのサブセットをユーザに表示する。例えば、サジェストコンテンツは、サジェスト要求内の文字に一般的に続く／サジェスト要求内の文字を含む文字または単語、サジェスト要求内の文字を含む記憶されている情報、およびサジェスト要求内の文字を含むスペルミスのある単語の訂正されたスペリングを含むことがある。サジェストコンテンツをユーザに表示することによって、ユーザは、採用するサジェストコンテンツを容易に選択し、サジェストされた文字を手入力するのにかかる時間を節約することが可能になることがある。クライアントデバイス１０２が、サジェスト要求に関して送信されたサジェストコンテンツを受信した後、ステータスロックが解除され、別のサジェスト要求がステータスロックを取得可能になる。
【００２４】
サジェスト要求をクライアントデバイス１０２からサーバ１０６に送信することができる時を調整するためにステータスロックを使用することによって、１度に１つのサジェスト要求しかサーバ１０６に送信され得ないことが保証される。したがって、各サジェスト要求がサーバ１０６によって処理された後に、（その後ユーザが入力した文字を含む）次のサジェスト要求をサーバ１０６に送信し、サーバ１０６によって処理することができる。さらに詳細には後述するように、そのような調整は、サーバ１０６が、ユーザ入力文字に対応するサジェストコンテンツを、クライアントデバイス１０２によってユーザ入力文字が受信された順序（シーケンス）を乱して決定することがないようにする。
【００２５】
図２Ａは、コンテンツのオートコンプリートを実施するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス２００は、図１のシステム１００で実施される。いくつかの実施形態では、プロセス２００は、図１のシステム１００のクライアントデバイス１０２で実施される。例えば、プロセス２００は、オートコンプリートをサポートし、クライアントデバイス１０２上で動作するソフトウェアの一部として実施することができる。
【００２６】
プロセス２００は、少なくとも１つのユーザ入力文字（または１組の文字）を含むサジェスト要求をサーバに送信するのに適切な時を決定するためにロッキングメカニズムを使用することを示す。後述するように、ロッキングメカニズムは、ユーザ入力文字に基づいて生成されたサジェスト要求が、クライアントの入力ボックスにそれらの文字が現れるようにユーザが意図したのと同じシーケンスで、クライアントデバイスからサーバに送信されることを保証する。
【００２７】
ステップ２０２では、サーバへの要求の送信を制御するように構成されているステータスロックが生成される。いくつかの実施形態では、ステータスロックは、何らかのトリガに応答してクライアントデバイスで生成されることがある。トリガは、（例えば物理的なキーボードまたはタッチスクリーンキーパッドを介して）ユーザが文字を入力し始めるという標示に関連付けられるように構成されることがある。例えば、トリガは、（例えばサーチエンジンまたは連絡先リストを呼び出す）アプリケーションの入力ボックスへのユーザからの初期対話をクライアントデバイスで受信することに関連付けられる標示である。
【００２８】
例えば、ステータスロックは、クライアントデバイスで動作するクライアントアプリケーションにおけるＪａｖａＳｃｒｉｐｔ（登録商標）グローバル変数として実装される。ロックオブジェクトなど他の実装形態も可能である。グローバル変数に関連付けられる第１の値は、ステータスロックがサジェスト要求のために取得されていることを示すように構成されることがあり、グローバル変数に関連付けられる第２の値は、ステータスロックを取得可能であることを示すように構成されることがある。例えば、グローバル変数の値が０に設定される場合、ステータスロックは、サジェスト要求のために取得可能であるとみなされることがあり、グローバル変数の値が１に設定されている場合、ステータスロックは、あるサジェスト要求のために取得されているとみなされることがある。
【００２９】
いくつかの実施形態では、（各入力ボックスに関連付けられるように）ただ１つのステータスロックが生成されることがあり、それにより、一度に１つのサジェスト要求のためにのみステータスロックを取得することができる。
【００３０】
ステップ２０４では、ユーザ入力文字を含む第１のサジェスト要求が生成される。
【００３１】
クライアントデバイスで動作するアプリケーションによって文字が受信されると、入力された文字をパスパラメータとして含むサジェスト要求が生成される。いくつかの実施形態では、単一の文字ではなく、（例えばすぐに続けて入力される）単語や語句など１組の文字がサジェスト要求に含まれることがある。サジェスト要求は、（例えばネットワークを介して）遠隔サーバに送信されるように構成される。サーバは、サジェスト要求を受信し、その要求を処理するように構成される。例えば、サーバは、要求のパスパラメータに含まれる文字（または１組の文字）を抽出することによってサジェスト要求を処理し、抽出された文字に少なくとも基づいてサジェストコンテンツを生成することができる。例えば、サジェストコンテンツは、サジェスト要求から抽出された文字に何らかの文字を関連付ける履歴ユーザ入力パターンに基づくことがある。
【００３２】
ステップ２０６では、ステータスロックが利用可能であるという標示に応答して、ステータスロックが取得され、第１のサジェスト要求がサーバに送信される。
【００３３】
様々な実施形態において、クライアントデバイスからサーバにサジェスト要求を送信することができるようになる前に、そのサジェスト要求のためにステータスロックを取得すべきである。したがって、サジェスト要求が生成された後、ステータスロックが（別のサジェスト要求によって）既に取得されているかどうか判断するためにチェックが行われる。ステータスロックが別のサジェスト要求によって取得されていない場合には、現サジェスト要求のためにステータスロックを取得することができる。現サジェスト要求のためにステータスロックが取得された後、そのサジェスト要求をサーバに送信することができる。
【００３４】
例えば、ステータスロックに関連付けられるグローバル変数が値０に設定されていると判断された場合には、現サジェスト要求のためにステータスロックを取得することができると判断される。逆に、ステータスロックに関連付けられるグローバル変数が値１に設定されていると判断された場合には、現サジェスト要求のためにステータスロックを取得することができないと判断される。
【００３５】
ステップ２０８では、文字に対応するサジェストコンテンツをサーバから受信したことに応答して、ステータスロックが解除される。
【００３６】
要求の処理に少なくとも一部基づいてサーバによって決定されたサジェストコンテンツが、クライアントデバイスで受信される。例えば、サジェストコンテンツは、要求に含まれている文字をコンプリート／補完／補足するために使用することができる個々の文字または１組の文字を含むことがある。例えば、サジェストコンテンツは、要求に含まれている文字から始まる一般的な単語を含むことがあり、または要求に含まれている１組の文字の正しいスペリングを含むことがある。クライアントデバイスは、サジェストコンテンツをユーザインターフェースで表示することができ、ユーザは、入力ボックスで、採用するサジェスト文字および／または１組の文字を選択することができる。時として、サジェストコンテンツが受信された後、ステータスロックが解除されることがある（例えば、グローバル変数の値が、ステータスロックが利用可能であることを示す値に変更されることがある）。
【００３７】
したがって、上のプロセス２００は、サジェスト要求がサーバに送信される時を制御するためにステータスロックを使用する技法を表す。ユーザが入力した文字に基づいてサジェスト要求が生成された後、そのサジェスト要求のためのステータスロックが取得され、サジェスト要求がサーバに送信される。サジェスト要求がステータスロックを取得した後、他の（その後に生成された）サジェスト要求はステータスロックを取得することができず、したがってそれらのサジェスト要求をサーバに送信することはできない。ステータスロックを取得しているサジェスト要求に関するサジェストコンテンツをサーバが返信した後で初めて、ステータスロックを取得し、その後、そのサジェスト要求をサーバに送信するために、他のサジェスト要求のためのステータスロックを解除（発行）することができる。したがって、このプロセスは、ユーザが文字を入力したシーケンス通りにサーバからサジェスト情報を受信することを容易にする。
【００３８】
いくつかの実施形態では、プロセス２００は、さらに、空の待ち行列を作成することを含む。後述するように、待ち行列は、クライアントデバイスでユーザが既に入力したが、サジェスト要求によってサーバにまだ渡されていない文字を記憶するためにクライアントデバイスで保守される。
【００３９】
いくつかの実施形態では、例えば、（例えば物理的なキーボードを介して、またはタッチスクリーンキーパッドを介して）ユーザが文字を入力し始めるという標示に関連付けられるトリガに応答してステータスロックを生成することに加えて、（例えば同じトリガに応答して）空の待ち行列を生成することもできる。ユーザがクライアントデバイスに文字（または１組の文字）を入力すると、サジェスト要求が生成される。しかし、ステータスロックが別のサジェスト要求のために取得されているので現サジェスト要求をサーバに送信することができない場合、文字は、待ち行列に記憶されることがある。複数の文字または複数組の文字を待ち行列に記憶することができる。文字および１組の文字は、ユーザがそれらの文字を入力したシーケンスおよび／またはそれらの文字が入力ボックス内に現れるように意図されたシーケンスを保存する様式で、および／またはそのようなシーケンスを保存するメタデータを用いて待ち行列に記憶することができる。ステータスロックが解除されて利用可能になると、１つまたは複数の文字を待ち行列から抽出して、サーバに送信されるサジェスト要求に含めることができる。例えば、待ち行列は、アレイデータ構造を使用して実装することができる。
【００４０】
図２Ｂは、待ち行列を使用するプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス２５０は、図１のシステム１００で実施される。いくつかの実施形態では、図２Ａのプロセス２００のステップ２０６は、プロセス２５０で実施される。
【００４１】
ステップ２０３０では、ユーザ入力文字を含む第１のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。第１のサジェスト要求のためにステータスロックを取得することができる場合には、ステップ２０３１が実行され、そうでない場合には、ステップ２０３２が実行される。
【００４２】
ステップ２０３１では、第１のサジェスト要求がサーバに送信される。
【００４３】
サジェスト要求をサーバに送信することができるようになる前に、サジェスト要求のためにステータスロックを取得する必要がある。したがって、クライアントデバイスは、第１のサジェスト要求をサーバに送信する前に、第１のサジェスト要求のためにステータスロックを取得することができるかどうかチェックする。次いで、第１のサジェスト要求のためにステータスロックを取得することができる場合、第１のサジェスト要求をサーバに送信することができる。
【００４４】
ステップ２０３２では、第１のサジェスト要求に含まれている文字が待ち行列に記憶される。
【００４５】
ステータスロックが別のサジェスト要求のために既に取得されていると判断された場合には、この時点では第１のサジェスト要求のためにステータスロックを取得することができず、したがって第１のサジェスト要求をサーバに送信することはできない。したがって、第１のサジェスト要求のパスパラメータに含まれている文字を待ち行列に記憶することができる。
【００４６】
図３Ａは、コンテンツのオートコンプリートと共に待ち行列を使用するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス３００は、図１のシステム１００で実行される。いくつかの実施形態では、プロセス３００は、図１のシステム１００のクライアントデバイス１０２で実施される。いくつかの実施形態では、プロセス３００は、図２Ａのプロセス２００と連動して使用される。
【００４７】
プロセス３００は、待ち行列の使用の一例を示し、図２Ａのプロセス２００で述べたように第１のサジェスト要求などのサジェスト要求をサーバに送信する前に、待ち行列が空である（すなわち、サーバにまだ送信されていないユーザ入力文字を記憶していない）か、空でない（すなわち、サーバにまだ送信されていないユーザ入力文字を記憶している）かを判断するためにチェックされる。例えば、プロセス３００は、図２Ａのプロセス２００のステップ２０６の前に実施される。
【００４８】
ステップ３０２では、待ち行列が空かどうか判断される。待ち行列が空であると判断された場合、制御はステップ３０４に進む。そうでない場合、制御はステップ３０６に進む。例えば、図２Ａのプロセス２００のステップ２０６でステータスロックが第１のサジェスト要求のために取得された後、待ち行列が空であるか否かチェックされることがある。上述したように、待ち行列は、クライアントデバイスでユーザが前に入力したが、サーバにまだ送信されていない文字（または１組の文字）を含む。
【００４９】
ステップ３０４では、ステータスロックが第１のサジェスト要求のために取得され、第１のサジェスト要求がサーバに送信される。待ち行列が空である場合、これは、ユーザが入力した全ての文字がそれまでにサーバに送信されていることを示す。この時点で、（ステータスロックが利用可能であると仮定して）ステータスロックが第１のサジェスト要求のために取得され、第１のサジェスト要求をサーバに送信することができる。
【００５０】
ステップ３０６では、第２のサジェスト要求が生成され、ここで、第２のサジェスト要求に関連付けられるパスパラメータは、第１のサジェスト要求に関連付けられるパスパラメータに含まれる文字と、待ち行列に記憶されている１つまたは複数の文字とを含む。待ち行列が空でなく、１つまたは複数の文字を記憶していると判断された場合、これは、サーバにまだ送信されていない少なくとも１つのユーザ入力文字が存在することを示し、したがって、新規のサジェスト要求（これは、図２、図２Ｂ、図３Ａ、および図３Ｂの第１のサジェスト要求から区別するために、時として「第２のサジェスト要求」と呼ぶ）が生成される。第２のサジェスト要求のパスパラメータは、第１のサジェスト要求のパスパラメータに含まれている文字（または１組の文字）と、待ち行列に記憶されている全ての文字とを含む。すなわち、第２のサジェスト要求のパスパラメータは、第１のサジェスト要求のパスパラメータからの文字と、待ち行列に現在記憶されている文字との組合せを含む。
【００５１】
ステップ３０８では、ステータスロックが第２のサジェスト要求のために取得され、第２のサジェスト要求がサーバに送信される。第２のサジェスト要求をサーバに送信するために、第２のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。ステータスロックが利用可能である場合、ステータスロックが第２のサジェスト要求のために取得されて、第２のサジェスト要求をサーバに送信することができる。いくつかの実施形態では、第２のサジェスト要求のパスパラメータに含まれている文字に対応するサジェストコンテンツがクライアントデバイスで受信された後、次のサジェスト要求が使用できるようにステータスロックを解除することができる。
【００５２】
ステップ３１０では、待ち行列がクリアされる。待ち行列に記憶されていた文字が抽出され、第２のサジェスト要求に含まれたので、待ち行列はクリアされる（例えば、待ち行列に記憶されている文字が廃棄され、クリアされた待ち行列は空になる）。
【００５３】
図３Ｂは、待ち行列から抽出された文字を含むサジェスト要求を生成するプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス３５０は、図１のシステム１００で実行される。いくつかの実施形態では、図３Ａのプロセス３００のステップ３０６は、プロセス３５０で実施される。
【００５４】
ステップ３０６１では、待ち行列に記憶されている１つまたは複数の文字は、それら１つまたは複数の文字が待ち行列に記憶された順序に少なくとも一部基づいて抽出される。
【００５５】
サーバに送信されていない文字を待ち行列が記憶していることが分かったとき、それらの文字は、それらの文字が待ち行列に記憶されたシーケンスで待ち行列から抽出することができる。様々な実施形態において、文字は、ユーザがそれらの文字をクライアントデバイスに入力したシーケンスで待ち行列に記憶される。すなわち、待ち行列から文字を抽出する順序またはシーケンスは、ファーストインファーストアウト方式である。
【００５６】
例えば、文字が、ａ→ｂ→ｃ→ｄの順序で待ち行列に記憶されると仮定する。この例では、待ち行列から文字が抽出される順序も、ａ→ｂ→ｃ→ｄである。
【００５７】
ステップ３０６２で、抽出された１つまたは複数の文字が、第１のサジェスト要求に関連付けられる文字と組み合わされて、文字列を形成する。
【００５８】
ファーストインファーストアウトの順序で待ち行列から抽出された文字が、第１のサジェスト要求（のパスパラメータ）に含まれている文字と組み合わされて、文字列を構成する。いくつかの実施形態では、第１のサジェスト要求に関連付けられる文字は、待ち行列から抽出された文字の後に置かれる。
【００５９】
前述の例を続けると、第１のサジェスト要求に関連付けられる文字が「ｅ」であり、待ち行列から抽出される文字は、上述したように「ａ」、「ｂ」、「ｃ」、および「ｄ」であると仮定する。この例では、待ち行列から抽出される文字と、第１のサジェスト要求に関連付けられる文字とから構成される文字列は、「ａｂｃｄｅ」となる。サーバは、文字列を処理するとき、文字列に含まれていたのと同じシーケンスで文字を検討する。したがって、この例では、サーバは、ａ→ｂ→ｃ→ｄ→ｅの順序に基づいてサジェストコンテンツを決定する。
【００６０】
ステップ３０６３では、文字列に少なくとも一部基づいて第２のサジェスト要求が生成される。いくつかの実施形態では、第２のサジェスト要求は、文字列を備えるようにパスパラメータが修正された第１のサジェスト要求を含む。いくつかの実施形態では、第２のサジェスト要求は、文字列を含むように設定されているパスパラメータを含む新規のサジェスト要求である。
【００６１】
いくつかの実施形態では、第２のサジェスト要求を送信する前に、待ち行列内の全ての文字がサジェスト要求のパスパラメータに追加されたことを保証するために待ち行列を再チェックすることができる。
【００６２】
図４は、待ち行列に記憶されている１つまたは複数の文字をサーバに送信するために予め設定された待機期間を使用するプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス４００は、図１のシステム１００で実行される。いくつかの実施形態では、プロセス４００は、図１のクライアントデバイス１０２で実行される。
【００６３】
いくつかの実施形態では、ユーザが文字を入力し、それが第１のサジェスト要求の生成をトリガするまでは待ち行列が空にされないので、待ち行列に記憶されている文字は、長期間サーバに送信されない、またはトリガが生じないので全く送信されないことがある。そのようなトリガが生じるのを無期限に待機するのではなく、いくつかの実施形態では待機期間を予め設定することができ、それにより、後述するように、その待機期間が経過した後、待ち行列が空にされていない（すなわち待ち行列内の文字がサーバに送信されていない）場合には、サジェスト要求が生成されて、待ち行列の文字をサーバに渡すために使用される。
【００６４】
ステップ４０２では、待ち行列に関連付けられる予め設定された待機期間が経過していると判断される。いくつかの実施形態では、第１の文字が空の待ち行列に追加された後、または待ち行列が空にされた後、タイマが始動される。予め設定された待機期間は、システム管理者が各待ち行列に関して特定的に、または複数の待ち行列に関して全般的に設定する時間でよい。例えば、新規の文字が待ち行列に追加される操作や、待ち行列内の文字が抜き出されてサジェスト要求に含まれる操作など、特定の操作に応答して、タイマがゼロにリセットされる。しかし、タイマをリセットするためにそのような操作が行われないまま、予め設定された待機期間に関連付けられる時間にタイマが達した場合には、新規のサジェスト要求（これは、上の図２Ａ、図２Ｂ、図３Ａ、および図３Ｂで述べたサジェスト要求から区別するために、時として「第３のサジェスト要求」と呼ぶ）が生成される。
【００６５】
ステップ４０４では第３のサジェスト要求が生成され、ここで、第３のサジェスト要求は、待ち行列に記憶されている１つまたは複数の文字を含む。待ち行列内の文字は、待ち行列を空にするためのトリガが生じない場合、しばらくはサーバに送信されないことがある。例えば、トリガが生じないことは、クライアントデバイスにユーザが新たに文字を入力しないこと、および／または記憶されている文字が含まれることがあるサジェスト要求が生成されないことに関連付けられることがある。タイマが、予め設定された待機期間に関連付けられる時間に達すると、新規のサジェスト要求が生成されて、待ち行列に記憶されている文字をサーバに渡すために使用される。待ち行列の全ての文字が、第３のサジェスト要求のパスパラメータに含まれることがある。
【００６６】
ステップ４０６では、ステータスロックが第３のサジェスト要求のために取得され、第３のサジェスト要求がサーバに送信される。
【００６７】
ステップ４０８では、待ち行列がクリアされる。
【００６８】
第３のサジェスト要求のためにステータスロックの取得が試行される。（例えばステータスロックが利用可能になっているので）第３のサジェスト要求のためにステータスロックを取得することができると判断されるとき、第３のサジェスト要求がサーバに送信され、待ち行列がクリアされる。そうではなく、ステータスロックが別のサジェスト要求のために取得されている場合、ステータスロックが解除され、したがって取得することができるようになるまで、第３のサジェスト要求は、ステータスロックの取得を待機してから再試行する。
【００６９】
例えば、文字ａ、ｂ、ｃ、およびｄが、ａ→ｂ→ｃ→ｄの順序で待ち行列に入れられると仮定する。予め設定された待機期間中、待ち行列に新規の文字は追加されず、サジェスト要求によって待ち行列から文字が抽出されることもない。したがって、予め設定された待機期間の経過後、第３のサジェスト要求が生成されることがあり、第３のサジェスト要求のパスパラメータが「ａｂｃｄ」に設定される。次いで、第３のサジェスト要求のためにステータスロックを取得できると、第３のサジェスト要求がサーバに送信される。
【００７０】
第３のサジェスト要求がサーバに送信された後、パスパラメータの文字に対応するサジェストコンテンツが、サーバによって返信されて、クライアントデバイスでユーザに提示される。この時点で、ステータスロックを解除することができ、これにより、他のサジェスト要求がステータスロックを取得できるようになる。
【００７１】
いくつかの実施形態では、プロセス４００は、さらに、サーバによって送信されたサジェストコンテンツをユーザに提示する前に、サジェストコンテンツに対するフィルタリングを行うことを含む。サーバから受信されたサジェストコンテンツを表示する前に、例えば、サジェストコンテンツのサブセットを、表示するものとして決定することができ、および／または少なくともサジェストコンテンツのサブセットを削除する、または表示せずに隠すことができる。例えば、あまりに多くのサジェスト文字が一度に表示されてユーザが当惑しないように、サジェストコンテンツの最初の５文字のみを抽出して、ユーザのために表示することができる。さらに、例えば、サジェスト要求が送信されたので、文字を削除することができる。例えば、前にユーザが入力ボックスに入力した文字「ａ」をユーザが削除したが、サーバに送信されたサジェスト要求のパスパラメータには文字「ａ」が含まれていた場合、この時点で、サジェストコンテンツを表示する前に文字「ａ」に対応するサジェストコンテンツを削除するという対応する操作が行われることがある。
【００７２】
いくつかの実施形態では、待ち行列に記憶されている文字が編集される。例えば、文字「ｃ」が、ユーザ入力文字中で文字「ａ」と文字「ｂ」の間に挿入されると仮定する。文字「ａ」と文字「ｂ」が依然として待ち行列に記憶されている（すなわち、文字「ａ」と文字「ｂ」がサーバにまだ送信されていない）と仮定する。そこで、待ち行列内で文字「ａ」および文字「ｂ」を検索し、次いで、文字「ａ」の後かつ文字「ｂ」の前に文字「ｃ」を挿入するという対応する操作が行われる。
【００７３】
図５は、コンテンツのオートコンプリートを実施するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス５００は、図１のシステム１００で実行される。いくつかの実施形態では、プロセス５００は、図１のクライアントデバイス１０２で実行される。
【００７４】
プロセス５００は、図２Ａのプロセス２００と、図３Ａのプロセス３００と、図４のプロセス４００とを組み込む一例を述べる。
【００７５】
ステップ５０１では、ステータスロックおよび待ち行列が生成される。いくつかの実施形態では、ステータスロックと待ち行列はどちらも、クライアントデバイスで動作するアプリケーションに関連付けられる入力ボックスとの初期ユーザ対話など、トリガに応答して生成することができる。生成された待ち行列は、文字が待ち行列に記憶されることが決定されるまでは空である。
【００７６】
ステップ５０２では、ユーザ入力文字を含む第１のサジェスト要求が生成され、ここで、ユーザ入力文字は、ユーザが生成し、クライアントデバイスで受信される。
【００７７】
ステップ５０３では、第１のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。ステータスロックが利用可能であり、第１のサジェスト要求のために取得することができる場合、制御はステップ５０４に進む。そうでない場合、制御はステップ５１０に進む。
【００７８】
ステップ５０４では、待ち行列が空か否かが判断される。待ち行列が空であると判断された場合、制御はステップ５０５に進む。そうでない場合、制御はステップ５０６に進む。
【００７９】
ステップ５０５では、第１のサジェスト要求がサーバに送信される。
【００８０】
ステップ５０６では、待ち行列から文字が抽出される。待ち行列に記憶されている文字は、待ち行列に記憶されたのと同じ順序で抽出されて、入力ボックスにそれらの文字が表示されるようにユーザが意図したシーケンスの順序を保存する。
【００８１】
ステップ５０７では、抽出された文字が、第１のサジェスト要求に関連付けられるユーザ入力文字と組み合わされて、文字列を形成する。
【００８２】
ステップ５０８では、文字列を含む第２のサジェスト要求が生成される。いくつかの実施形態では、パスパラメータとして文字列を使用する新規のサジェスト要求が生成される。いくつかの実施形態では、第１のサジェスト要求のパスパラメータが改訂されて、文字列となり、この改訂された第１のサジェスト要求を、時として第２のサジェスト要求と呼ぶ。
【００８３】
ステップ５０９では、第２のサジェスト要求がサーバに送信され、待ち行列がクリアされる。第２のサジェスト要求を送信する前、ステータスロックを取得することができるかどうか判断される。取得することができる場合、ステータスロックが第２のサジェスト要求のために取得され、その後、第２のサジェスト要求がサーバに送信される。
【００８４】
ステップ５１０では、ユーザ入力文字が待ち行列に記憶される。
【００８５】
ステップ５１１では、予め設定された待機期間が経過しているかどうか判断される。予め設定された待機期間が経過している場合、制御はステップ５１２に進む。そうでない場合、制御はステップ５１１に進む。
【００８６】
ステップ５１２では、待ち行列から抽出された文字を含む第３のサジェスト要求が生成される。
【００８７】
ステップ５１３では、第３のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。ステータスロックを取得することができる場合、制御はステップ５１４に進む。そうでない場合、制御はステップ５１３に進む。
【００８８】
ステップ５１４では、第３のサジェスト要求がサーバに送信され、待ち行列がクリアされる。
【００８９】
ステップ５１５では、サーバによって返信されたサジェストコンテンツが受信され、ステータスロックが解除される。
【００９０】
ステップ５１６では、サジェストコンテンツに対してフィルタリングが行われ、フィルタリング後のサジェストコンテンツがユーザに提示される。
【００９１】
以下は、プロセス５００を適用する一例である。
【００９２】
ユーザＡが、ネットワークに接続してコンテンツのオートコンプリートも行うように構成されたクライアントデバイスで動作するアプリケーションに文字を入力している。ユーザＡがクライアントデバイス上でアプリケーションＸを開くとき、ステップ５０１に従って、クライアントデバイスでステータスロックおよび空の待ち行列が生成される。
【００９３】
ユーザＡが、アプリケーションＸで、「王菲［Ｗａｎｇ  Ｆｅｉ］」という名前の自分の友人を検索したいとする。ユーザＡは、まず、アプリケーションＸに関連付けられる入力ボックスに文字「ｗ」を入力する。ステップ５０２に基づいて、ユーザＡがクライアントデバイスに「ｗ」を入力したのに応答して、クライアントデバイスで第１のサジェスト要求が生成され、ここで、第１のサジェスト要求のパスパラメータが文字「ｗ」を含む。
【００９４】
ステップ５０３に従って、ステータスロックが利用可能であり、第１のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。以下の２つの可能なシナリオが生じ得る。
【００９５】
１）ステータスロックが利用可能である場合、第１のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。
【００９６】
次いで、ステップ５０４によって表されるように、待ち行列が空であるかどうか判断するために待ち行列をチェックすることができる。待ち行列が空である場合、ステップ５０５によって表されるように、第１のサジェスト要求がサーバに送信される。ステップ５１５によって表されるように、サーバによって返信されたサジェストコンテンツが受信された後、ステータスロックが解除される。後に生成されたサジェスト要求が、ステータスロックを取得することができる。この例では、ステップ５１６に従って、ユーザに提示されるサジェストコンテンツは、個々の文字「王［Ｗａｎｇ］」、「汪［Ｗａｎｇ］」、「Ｃ８［Ｗｕ］」などである。その後、ユーザが文字「ｆ」を入力した場合、次いで返信される、文字「ｆ」に対応するサジェスト候補は、「Ｃ２［Ｆｅｉ］」、「Ｃ４［Ｆｅｉ］」、「菲［Ｆｅｉ］」などのみである。また、サーバは、前の文字「ｗ」の文脈で決定される文字「ｆ」に関するサジェストコンテンツを送信することもある。
【００９７】
しかし、待ち行列が空でない場合、ステップ５０６によって表されるように、待ち行列に記憶されている文字を、それらの文字が待ち行列に記憶された順序で抽出することができる。例えば、待ち行列に記憶されている文字は、それらの文字がｌ→ｙの順序で待ち行列に記憶されている場合には、「ｌ」、次いで「ｙ」の順序で抽出される。したがって、待ち行列に記憶されている文字は、ｌ→ｙとして抽出され、これは、それらが待ち行列に記憶されたのと同じシーケンスである。ステップ５０７に従って、抽出された文字「ｌ」および「ｙ」を、第１のサジェスト要求に含まれている文字「ｗ」と組み合わせて、文字列「ｌｙｗ」を形成することができる。ステップ５０８に従って、文字列「ｌｙｗ」となるように第１のサジェスト要求のパスパラメータを改訂することによって、第２のサジェスト要求が生成される。第２のサジェスト要求のためにステータスロックを取得することが可能になると、ステップ５０９に従って、第２のサジェスト要求がサーバに送信され、待ち行列をクリアすることができる。サーバによって返信されるはずのサジェストコンテンツが待機される。ステップ５１５によって表されるように、サーバによって返信されたサジェストコンテンツが受信された後、ステータスロックを解除することができる。後に生成されたサジェスト要求が、ステータスロックを取得することができる。例えば、返されるサジェストコンテンツは、数組の文字「Ｃ５Ｃ６Ｃ３［Ｌｉｕ  Ｙｉｗｅｉ］」および／または「李Ｃ３Ｃ７［Ｌｉ  Ｙａｗｅｉ］」であり得る。
【００９８】
２）しかし、ステップ５１０によって表されるように、ステータスロックが別のサジェスト要求のために既に取得されていると判断された場合には、第１のサジェスト要求のためにステータスロックを取得することはできない。その結果、第１のサジェスト要求のパスパラメータに含まれている文字「ｗ」が待ち行列に記憶される。ステップ５１１によって表されるように、予め設定された待機期間が経過しているかどうか判断される。経過していない場合、待ち行列に関連付けられるタイマが、後の時点でチェックされる。時間が経過していると判断される場合、ステップ５１２によって表されるように、待ち行列に記憶されている文字を含むように第３のサジェスト要求が生成される。待ち行列に記憶されている文字がそれぞれ「ｌ」、「ｙ」、および「ｗ」であり、それらの文字が待ち行列に入れられた順序がｌ→ｙ→ｗである場合、第３のサジェスト要求のパスパラメータは、ｌ→ｙ→ｗの順序で「ｌｙｗ」を記憶する。ステップ５１３に従って、第３のサジェスト要求のためにステータスロックを取得することができるかどうか判断される。ステータスロックが第３のサジェスト要求のために利用可能でない場合、ステータスロックは、後の時点で再びチェックされる。第３のサジェスト要求のためにステータスロックを取得することができる場合、ステップ５１４に従って、第３のサジェスト要求がサーバに送信され、待ち行列がクリアされる。サーバによって返信されるはずのサジェストコンテンツが待機される。ステップ５１５によって表されるように、サーバによって返信されたサジェストコンテンツが受信された後、ステータスロックを解除することができる。後に生成されたサジェスト要求が、ステータスロックを取得することができる。例えば、返されるサジェストコンテンツは、数組の文字「Ｃ５Ｃ６Ｃ３［Ｌｉｕ  Ｙｉｗｅｉ］」および／または「李Ｃ７Ｃ３［Ｌｉ  Ｙａｗｅｉ］」であり得る。
【００９９】
上述した例を要約すると、空の待ち行列が生成される。第１のサジェスト要求が唯一のステータスロックを取得することができない場合、第１のサジェスト要求を使用して渡されるべき文字は、消失されずに、後の時点でサーバに送信されることを保証するために、待ち行列に記憶することができる。さらに、第１のサジェスト要求が唯一のステータスロックを取得した後、待ち行列内の文字を第１のサジェスト要求のパスパラメータに追加することもでき、次いで、第２のサジェスト要求を生成することができ、第２のサジェスト要求をサーバに送信することができる。その結果、前の時点で送出することができなかった文字を、サーバに送信することができるようになるまで待ち行列に記憶しておくことができ、それにより、クライアントデバイスでユーザが入力した全ての文字に関してサジェストコンテンツを返信することができることを保証する。
【０１００】
さらに、予め設定された待機期間が経過しており、かつ待ち行列内の文字が送信されていない場合には、第３のサジェスト要求を生成して、待ち行列に記憶されている文字をサーバに渡すことができる。第３のサジェスト要求は、待ち行列が空になるまでは、ステータスロックを取得する（または取得を試みる）。したがって、予め設定された待機期間は、クライアントデバイスでユーザが入力した全ての文字に関してサジェストコンテンツが返信されることをさらに保証する働きをする。
【０１０１】
図６は、コンテンツのオートコンプリートを実施するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセス６００は、図１のシステム１００で実行される。いくつかの実施形態では、プロセス６００は、図１のサーバ１０６で実行される。
【０１０２】
ステップ６０２では、第１のサジェスト要求が受信され、ここで、第１のサジェスト要求は、ステータスロックを取得していることに関連付けられる。クライアントデバイスで動作するアプリケーションの入力ボックスにユーザが文字を入力すると、サジェスト要求が生成されて、入力された文字をサーバに送信するために使用され、ここで、文字に対応するサジェストコンテンツが返信されることがある。第１のサジェスト要求は、ユーザが入力した文字を含むようにクライアントデバイスで生成することができる。第１のサジェスト要求のためにステータスロックを取得することができるとき、第１のサジェスト要求がサーバに送信される。したがって、第１のサジェスト要求がサーバに送信されることにより、第１のサジェスト要求は、ステータスロックを既に取得していなければならない。
【０１０３】
ステップ６０４では、第１のサジェスト要求に関連付けられるパスパラメータに含まれる文字に対応するサジェストコンテンツが決定される。サーバは、第１のサジェスト要求のパスパラメータに含まれている各個の文字または各組の文字に対応するサジェストコンテンツを決定することができる。例えば、サーバは、一般に一緒に使用される文字に関する履歴データ（例えば、一般的な語句または語彙を形成する数組の文字）、ユーザのために予め記憶されている数組の文字に関する記憶されているデータ（例えば、ユーザの連絡先の名前）、および／または他の適切な技法を使用することによって、サジェストコンテンツを決定することができる。いくつかの実施形態では、サーバは、前に受信されたサジェスト要求に含まれている文字の文脈に基づいて、第１のサジェスト要求に含まれる文字に関するサジェストコンテンツを決定することができる。様々な実施形態において、サーバは、第１のサジェスト要求に含まれている文字を、それらの文字がパスパラメータに含まれている順序で処理する。
【０１０４】
例えば、ユーザが、クライアントデバイスにインストールされたアプリケーションで人の名前を検索したいとする。サーバで受信される第１のサジェスト要求のパスパラメータは、文字「ｗ」である。サーバは、サーバデータベースに記憶されている連絡先の名前に関係する記憶されているデータを検索し、文字「ｗ」で始まる姓、例えば「王［Ｗａｎｇ］」、「汪［Ｗａｎｇ］」、および「Ｃ８［Ｗｕ］」を見つけることが可能である。したがって、決定される対応するサジェストコンテンツは、「王［Ｗａｎｇ］」、「汪［Ｗａｎｇ］」、および「Ｃ８［Ｗｕ］」である。
【０１０５】
ステップ６０６では、サジェストコンテンツが送信される。サーバは、サジェストコンテンツをクライアントデバイスに返信することができる。前述の例を続けると、サーバは、クライアントデバイスのためのサジェストコンテンツとして、「王［Ｗａｎｇ］」、「汪［Ｗａｎｇ］」、および「Ｃ８［Ｗｕ］」を返信する。
【０１０６】
プロセス６００は、第１のサジェスト要求をサーバで処理する一例を示したが、他のサジェスト要求（例えば第２のサジェスト要求および第３のサジェスト要求）も同様にサーバで処理することができる。
【０１０７】
図７は、コンテンツのオートコンプリートを実施するためのシステムの一実施形態を示す図である。この例では、システム７００は、ステータスロック作成モジュール１１と、待ち行列作成モジュール１２と、サジェスト要求生成モジュール１３と、送信モジュール１４と、受信および解除モジュール１５と、スクリーニングおよび表示モジュール１６とを含む。いくつかの実施形態では、システム７００は、クライアントデバイスの一例である。
【０１０８】
モジュールおよびサブモジュールは、１つまたは複数のプロセッサ上で動作するソフトウェアコンポーネントとして、またはプログラマブル論理デバイスなどのハードウェアとして実装することができ、および／または素子に設計された特定用途向け集積回路は、本発明の実施形態で述べる方法をコンピュータデバイス（例えば、パーソナルコンピュータ、サーバ、ネットワーク機器など）に実施させるためのいくつかの命令を含む、不揮発性記憶媒体（例えば、光ディスク、フラッシュ記憶デバイス、モバイルハードディスクなど）に記憶することができるソフトウェア製品の形態で具現化することができる。モジュールおよびサブモジュールは、単一のデバイス上に実装することも、複数のデバイスに分散させることもできる。
【０１０９】
ステータスロック作成モジュール１１は、サジェスト要求のためのステータスロックを作成するように構成されている。
【０１１０】
サジェスト要求生成モジュール１３は、ユーザが入力した文字に基づいて第１のサジェスト要求を生成するように構成されている。第１のサジェスト要求のパスパラメータは、入力された文字を含む。
【０１１１】
送信モジュール１４は、ステータスロックを取得することができるときに、第１のサジェスト要求をサーバに送信するように構成されている。
【０１１２】
受信および解除モジュール１５は、サーバによって返信されるサジェストコンテンツを受信し、サジェストコンテンツの受信に応答してステータスロックを解除するように構成されている。
【０１１３】
いくつかの実施形態では、システム７００は、さらに、待ち行列作成モジュール１２を含む。待ち行列作成モジュール１２は、空の待ち行列を作成するように構成される。待ち行列は、ユーザが入力したが、サーバにまだ送信されていない文字を記憶するように構成されている。
【０１１４】
スクリーニングおよび表示モジュール１６は、サーバによって返信されたサジェストコンテンツに対して、ユーザに表示する前にフィルタリングを行うように構成されている。
【０１１５】
いくつかの実施形態では、送信モジュール１４は、さらに以下のものを含む。
【０１１６】
利用可能であるときにはステータスロックを第１のサジェスト要求のために取得するように構成された取得サブモジュール。
【０１１７】
第１のサジェスト要求のためにステータスロックを取得することができない場合に、第１のサジェスト要求のパスパラメータに含まれている文字を待ち行列に記憶するように構成された待ち行列追加サブモジュール。
【０１１８】
待ち行列が空であるかどうかチェックするように構成されたチェックサブモジュール。待ち行列が空であるとチェックサブモジュールが判断した場合には、第１の送信サブモジュールが、第１のサジェスト要求をサーバに送信するように構成される。しかし、待ち行列が空でないとチェックサブモジュールが判断した場合には、生成および送信サブモジュールは、待ち行列に記憶されている文字を抽出し、それらを第１のサジェスト要求のパスパラメータに含まれる文字に追加し、それにより第２のサジェスト要求を生成するように構成される。次いで、チェックサブモジュールは、第２のサジェスト要求をサーバに送信し、待ち行列をクリアする。
【０１１９】
いくつかの実施形態では、生成および送信サブモジュールは、さらに以下のものを含む。
【０１２０】
待ち行列に記憶されている文字を、それらの文字が行列に入れられた順序でファーストインファーストアウト方式で抽出するように構成された抽出サブモジュール。
【０１２１】
抽出された文字を、第１のサジェスト要求に含まれている文字と組み合わせて、文字列を形成するように構成された組合せサブモジュール。
【０１２２】
改訂サブモジュールは、第１のサジェスト要求のパスパラメータを改訂して文字列にして、第２のサジェスト要求を生成するように構成されている。
【０１２３】
いくつかの実施形態では、送信モジュール１４は、さらに以下のものを含む。
【０１２４】
トリガが生じる（例えば、新規の文字が待ち行列に記憶される、および／または新規のサジェスト要求が生成される）ことなく予め設定された待機時間が経過した場合に、待ち行列に含まれている文字を使用して第３のサジェスト要求を生成するように構成されている生成サブモジュール。
【０１２５】
ステータスロックが第３のサジェスト要求のために取得されるときに、第３のサジェスト要求をサーバに送信し、待ち行列をクリアするように構成されている送信サブモジュール。
【０１２６】
図８は、コンテンツのオートコンプリートを実施するためのシステムの一実施形態を示す図である。いくつかの実施形態では、システム８００は、サーバの一例を含む。この例では、システム８００は、受信モジュール２１と、取得モジュール２２と、返信モジュール２３とを含む。
【０１２７】
受信モジュール２１は、ステータスロックを取得している第１のサジェスト要求を受信するように構成されている。
【０１２８】
取得モジュール２２は、第１のサジェスト要求に含まれているパスパラメータに対応するサジェストコンテンツを決定するように構成されている。
【０１２９】
返信モジュール２３は、第１のサジェスト要求の送信元のクライアントデバイスにサジェストコンテンツを送信するように構成されている。
【０１３０】
デバイスタイプの実施形態に関しては、基本的にプロセスの実施形態と同様であるので、それらの説明は比較的容易である。適切であれば、プロセスの実施形態での一部の説明を参照されたい。
【０１３１】
本明細書に含まれる実施形態は順々に説明されているが、各実施形態の説明は、他の実施形態と相違する範囲に焦点を当てており、各実施形態の同一または同様の部分に関してそれらの説明を相互に参照することができる。
【０１３２】
本出願のいくつかの実施形態を既に説明してきたが、当業者は、基本的な独創的概念を把握すれば、これらの実施形態に他の修正または改訂を施すことができる。したがって、添付の特許請求の範囲は、説明した実施形態、および本出願の範囲内にある全ての修正および改訂を含むものと解釈すべきである。
【０１３３】
当業者は、本出願の実施形態を、方法、システム、またはコンピュータソフトウェア製品として提供することができることを理解すべきである。したがって、本出願は、完全にハードウェアから構成された実施形態、完全にソフトウェアから構成された実施形態、およびソフトウェアとハードウェアを組み合わせた実施形態の形態を取ることができる。さらに、本出願は、コンピュータ動作可能プログラムコードを含む１つまたは複数のコンピュータ動作可能記憶媒体（限定はしないが、磁気ディスク記憶デバイス、ＣＤ−ＲＯＭ、および光記憶デバイスを含む）に実装されたコンピュータプログラム製品の形態を取ることができる。
【０１３４】
方法、機器（システム）、およびコンピュータプログラム製品に基づいて、フローチャートおよび／またはブロック図を参照して本出願を述べる。フローチャートおよび／またはブロック図中の各プロセスおよび／または各ブロック、ならびにフローチャートおよび／またはブロック図中のプロセスおよび／またはブロックの組合せは、コンピュータプログラムコマンドによって実現することができることを理解すべきである。これらのコンピュータコマンドを、汎用コンピュータ、専用コンピュータ、組込みプロセッサ、または他のプログラマブルデータ処理機器のプロセッサに提供して、機械を生み出すことができ、その結果、コンピュータ、または他のプログラマブルデータ処理機器のプロセッサによって実行されるコマンドが、フローチャート中の１つまたは複数のプロセスおよび／またはブロック図中の１つまたは複数のブロックによって指定される機能を実現するために使用されるデバイスを生み出す。
【０１３５】
また、これらのコンピュータプログラムコマンドは、特定の様式で動作するようにコンピュータまたは他のプログラマブルデータ処理機器を誘導することができるコンピュータ可読記憶デバイスに記憶することもでき、その結果、これらのコンピュータ可読デバイスに記憶されたコマンドは、コマンドデバイスを含む製品を生み出す。これらのコマンドデバイスは、フローチャート中の１つまたは複数のプロセスおよび／またはブロック図中の１つまたは複数のブロックで指定される機能を実現する。
【０１３６】
また、これらのコンピュータプログラムコマンドは、コンピュータまたは他のプログラマブルデータ処理機器にロードすることもでき、その結果、コンピュータまたは他のプログラマブル機器上で一連の操作ステップが実行されて、コンピュータ処理を生み出す。このようにして、コンピュータまたは他のプログラマブル機器上で実行されるコマンドは、フローチャート中の１つまたは複数のプロセスおよび／またはブロック図中の１つまたは複数のブロックによって指定される機能を実現するためのステップを提供する。
【０１３７】
本出願は、プログラムモジュールなどコンピュータによって実行されるコンピュータ実行可能コマンドの一般的な文脈で述べることができる。一般に、プログラムは、特定のタスクを実行するためまたは特定の抽象データタイプを実現するために、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本出願は、分散コンピューティング環境で実施することもできる。そのような分散コンピューティング環境では、タスクは、通信ネットワークを介して接続された遠隔処理機器によって実行される。分散コンピューティング環境では、プログラムモジュールは、記憶機器を含むローカルまたはリモートコンピュータにある記憶媒体に位置させることができる。
【０１３８】
最後に、本文献では、「第１の」や「第２の」などの関係語は、１つの実体または操作と別の実体または操作を区別するためにのみ使用され、これらの実体または操作の間の任意のそのような実際の関係またはシーケンスが存在することを必要としない、または示唆しないことも特記しておく必要がある。さらに、用語「備える」、「含む」、またはそれらの活用形は、それらの非排他的な意味合いで解釈されるべきである。したがって、一連の要素を備えるプロセス、方法、製品、または機器は、それらの要素を備えるだけでなく、明示的に列挙されていない他の要素、またはそのようなプロセス、方法、製品、もしくは機器に本来備わっている要素も備える。さらなる限定がないとき、語句「１つの〜を備える」によって限定される要素に関して、それらの要素を備えるプロセス、方法、製品、または機器にさらなる同一要素が存在することは排除されない。
【０１３９】
オートコンプリートコンテンツ入力に関する上記の技法は詳細に上で述べてきた。本文献では、本出願の実装の原理および形態を説明するために特定の実施形態を採用している。上記の実施形態の説明は、本出願の方法およびその中心概念を理解する一助としてのみ意図されている。さらに、当業者は、本出願の概念に基づいて、特定の用途および適用範囲に修正を施すことができる。上記のことを要約すると、本説明の内容は、本出願を限定するものと理解されるべきでない。
【０１４０】
理解しやすくするために、上記の実施形態は幾分詳細に述べてきたが、本発明は、提示した詳細に限定されない。本発明を実施する多くの代替方法がある。開示した実施形態は例示であり、限定ではない。
適用例１：オートコンプリートを実行するためのシステムであって、
１または複数のプロセッサであって、
サーバへの要求の送信を制御するように構成されているステータスロックを生成し、
ユーザ入力文字を含む第１のサジェスト要求を生成し、
前記ステータスロックが利用可能であるという表示に応答して、前記第１のサジェスト要求のための前記ステータスロックを取得し、前記第１のサジェスト要求を前記サーバに送信し、
前記サーバからの前記文字に対応するサジェストコンテンツの受信に応答して、前記ステータスロックを解除するように構成されている、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１つまたは複数のプロセッサに命令を提供するように構成されている１または複数のメモリを備える
システム。
適用例２：前記１つまたは複数のプロセッサは、さらに、待ち行列を生成するように構成されている適用例１に記載のシステム。
適用例３：前記１つまたは複数のプロセッサは、さらに、
前記ステータスロックが利用可能でないという表示に応答して、前記文字を前記待ち行列に記憶し、
予め設定された待機期間が経過しているか判断し、
前記予め設定された待機期間が経過しているという判断に応答して、
前記待ち行列に記憶されている前記文字を含む第３のサジェスト要求を生成し、
前記第３のサジェスト要求のための前記ステータスロックを取得して、前記第３のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアするように構成されている適用例２に記載のシステム。
適用例４：前記第１のサジェスト要求のために前記ステータスロックを取得する前に、前記１つまたは複数のプロセッサは、さらに、
待ち行列が空であるか否か判断し、
前記待ち行列が空であると判断した場合には、前記第１のサジェスト要求のための前記ステータスロックの取得に進み、
前記待ち行列が空でないと判断した場合には、
前記待ち行列に記憶されている１つまたは複数の文字に少なくとも一部基づいて第２のサジェスト要求を生成し、
前記第２のサジェスト要求のための前記ステータスロックを取得して、前記第２のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアするように構成されている適用例１に記載のシステム。
適用例５：前記待ち行列に記憶されている前記１つまたは複数の文字に少なくとも一部基づいて前記第２のサジェスト要求を生成することは、
前記待ち行列から前記１つまたは複数の文字を抽出し、
前記抽出された１つまたは複数の文字を、前記第１のサジェスト要求に関連付けられている前記文字と組み合わせて、文字列を形成し、
前記文字列を含むように前記第２のサジェスト要求を生成する
ことを含む適用例４に記載のシステム。
適用例６：前記サジェストコンテンツは、予測される１組の１つまたは複数の文字と、予め記憶されている１組の１つまたは複数の文字と、１組の１つまたは複数の文字に関連付けられている訂正されたスペリングとの１または複数を備える適用例１に記載のシステム。
適用例７：前記１つまたは複数のプロセッサは、さらに、前記サジェストコンテンツを表示するように構成されている適用例１に記載のシステム。
適用例８：前記１つまたは複数のプロセッサは、さらに、前記サジェストコンテンツを表示する前に、前記サジェストコンテンツに対するフィルタリングを行うように構成されている適用例７に記載のシステム。
適用例９：前記サジェストコンテンツに対するフィルタリングを行うことは、ある文字を削除するという選択の受信に対応する前記サジェストコンテンツの一部の削除を含む適用例８に記載のシステム。
適用例１０：オートコンプリートを実施するための方法であって、
サーバへの要求の送信を制御するように構成されているステータスロックを生成し、
ユーザ入力文字を含む第１のサジェスト要求を生成し、
前記ステータスロックが利用可能であるという表示に応答して、前記第１のサジェスト要求のための前記ステータスロックを取得して、前記第１のサジェスト要求を前記サーバに送信し、
前記サーバからの前記文字に対応するサジェストコンテンツの受信に応答して、前記ステータスロックを解除すること
を備える方法。
適用例１１：さらに、待ち行列を生成することを備える適用例１０に記載の方法。
適用例１２：さらに、前記ステータスロックが利用可能でないという表示に応答して、前記文字を前記待ち行列に記憶し、
予め設定された待機期間が経過しているか判断し、
前記予め設定された待機期間が経過しているという判断に応答して、前記待ち行列に記憶されている前記文字を含む第３のサジェスト要求を生成し、
前記第３のサジェスト要求のための前記ステータスロックを取得して、前記第３のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアすること
を備える適用例１１に記載の方法。
適用例１３：前記第１のサジェスト要求のために前記ステータスロックを取得する前に、さらに、
待ち行列が空であるか否かを判断し、
前記待ち行列が空であると判断された場合には、前記第１のサジェスト要求のための前記ステータスロックの取得に進み、
前記待ち行列が空でないと判断された場合には、
前記待ち行列に記憶されている１つまたは複数の文字に少なくとも一部基づいて第２のサジェスト要求を生成し、
前記第２のサジェスト要求のための前記ステータスロックを取得して、前記第２のサジェスト要求を前記サーバに送信し、
前記待ち行列をクリアすること
を備える適用例１０に記載の方法。
適用例１４：前記待ち行列に記憶されている前記１つまたは複数の文字に少なくとも一部基づいて前記第２のサジェスト要求を生成することは、
前記待ち行列から前記１つまたは複数の文字を抽出し、
前記抽出された１つまたは複数の文字を、前記第１のサジェスト要求に関連付けられている前記文字と組み合わせて、文字列を形成し、
前記文字列を含むように前記第２のサジェスト要求を生成すること
を備える適用例１３に記載の方法。
適用例１５：前記サジェストコンテンツは、予測される１組の１つまたは複数の文字と、予め記憶されている１組の１つまたは複数の文字と、１組の１つまたは複数の文字に関連付けられる訂正されたスペリングとの１または複数を備える適用例１０に記載の方法。
適用例１６：さらに、前記サジェストコンテンツを表示することを備える適用例１０に記載の方法。
適用例１７：さらに、前記サジェストコンテンツを表示する前に、前記サジェストコンテンツに対するフィルタリングを行うことを備える適用例１６に記載の方法。
適用例１８：前記サジェストコンテンツに対するフィルタリングを行うことは、ある文字を削除するという選択の受信に対応する前記サジェストコンテンツの一部の削除を含む適用例１７に記載の方法。
適用例１９：オートコンプリートを実施するためのコンピュータプログラム製品であって、コンピュータ可読記憶媒体内に具現化され、
サーバへの要求の送信を制御するように構成されているステータスロックを生成するためのコンピュータ命令と、
ユーザ入力文字を含む第１のサジェスト要求を生成するためのコンピュータ命令と、
前記ステータスロックが利用可能であるという標示に応答して、前記第１のサジェスト要求のための前記ステータスロックを取得して、前記第１のサジェスト要求を前記サーバに送信するためのコンピュータ命令と、
前記サーバからの前記文字に対応するサジェストコンテンツの受信に応答して、前記ステータスロックを解除するためのコンピュータ命令と
を備えるコンピュータプログラム製品。
【０１４１】
【表１】
0005973655.tif 000002
【図１】
0005973655.tif 000003
【図２Ａ】
0005973655.tif 000004
【図２Ｂ】
0005973655.tif 000005
【図３Ａ】
0005973655.tif 000006
【図３Ｂ】
0005973655.tif 000007
【図４】
0005973655.tif 000008
【図５】
0005973655.tif 000009
【図６】
0005973655.tif 000010
【図７】
0005973655.tif 000011
【図８】
0005973655.tif 000012