私が写真にコメントしたとしましょう。他に100万のコメントがあります。 [コメントをもっと見る]を押そうとすると、一度に50がロードされます。ご想像のとおり、この方法で投稿内の元のコメントを見つけるには何時間もかかる可能性があります。
アクティビティログに移動して、そこからコメントをクリックできますが、クリックすると投稿に移動しますが、コメントを見つけるためにスクロールする必要があります。誰かが私のコメントに返信した場合、そのFacebook通知をクリックすると、その投稿に移動し、コメントまで自動的にスクロールダウンします。しかし、誰も答えなければ、私はその能力を持っていません。
何時間もスクロールせずに、そのような投稿に対して行ったコメントを見つけるにはどうすればよいですか?
バイナリ検索 を使用してURLを手動で変更すると、コメントを見つけることができます。
アクティビティログからコメントの時間を取得することから始めます。次に、投稿に移動して、いずれかのコメントの下にある日付と時刻のテキストを押します。移動するURLは次のようになります。
https://www.facebook.com/{page}/posts/{postID}?comment_id={comment_id}&offset=0&total_comments=1000000
コメントのoffset
を探しているので、0(下限)からコメントの数(上限、この場合は1 000 000)の間にある必要があります。オフセット0は最新の投稿を意味し、1000000は最も古い投稿です(この場合)。
Lがオフセットの下限を示し、Uが上限を示し、MがLとUの中間にあるとします(M =(L + U)/ 2)
URLからcomment_id
を削除し、オフセットをMに変更します。URLは次のようになります。
https://www.facebook.com/{page}/posts/{postID}?offset=M&total_comments=1000000
そこにあるコメントの時間を見て、投稿の時間と比較してください。
手順4に進み、コメントが見つかるまで繰り返します。
これにより、log2(1000000)= 17回の反復内でコメントが得られるはずです。そのため、複雑ではありますが、コメントをはるかに高速に見つけることができます。
コメントを(さらに)速く見つけるには、時間差を使用して、M以外のLとUの間の何かを推測できます。
オプション:
T_LがポストLとポストUの間の時間差(分単位など)を表し、t_YがポストとポストUの間の時間差を表すとします。その後、Mの次の式はごくわずかな反復(1、2、 3コメントの均等な広がりに応じて)
M = (U - L) / t_L - L
ただし、時間差を分単位で計算するのは複雑なため、おそらくあまり時間を節約できません。
100万のコメントがない場合は、おそらくバイナリ検索をスキップして、代わりに最初のコメント、最後のコメント、コメントの時間差から推測することができます。