当サイトではアフィリエイトプログラムを利用して商品を紹介しています。掲載リンクからご購入いただいた場合、当サイトに報酬が発生することがあります。

Notionの検索は、作った直後には出てきません|同期で件数が合わない2つの理由

図書館のカード目録から一枚を探している人。Notionの検索が反映されるまでの遅れを表した記事のアイキャッチ

Notionを外部のツールとつないでいると、ときどき件数が合わなくなります。さっき作ったはずのページが、同期されていない。

次に動かすと、ちゃんと入っている。だから再現しないし、原因も分からない。そういう経験はないでしょうか。

実際に計測しました。原因は2つあって、どちらも検索の仕組みに関係しています。

作った直後は、検索に出てこない

まず1つ目です。

20秒かかりました

ページを1つ作って、そのページにしかない言葉で検索をかけました。作った直後、5秒後、10秒後、15秒後。どの時点でも見つかりません。

作ってから 検索に出るか
直後 出ない
5秒後 出ない
10秒後 出ない
15秒後 出ない
20秒後 見つかる

データベースの行でも同じように測ったところ、約21秒でした。だいたい20秒前後、と考えておけばよさそうです。

ページを取りにいけば、すぐ読めます

誤解のないように書いておくと、ページ自体はすぐに存在しています。識別子を指定して取りにいけば、作った直後から中身が読めます。

遅れているのは検索のほうだけです。検索用の索引を作るのに時間がかかっている、ということだと思います。

エラーにはなりません

ここが厄介なところです。見つからないとき、エラーは返りません。正常に「0件です」と返ってきます。

0件なのか、まだ索引に載っていないだけなのか。返ってきたものからは区別がつきません。

同期で件数が合わない理由

ここまでが分かると、冒頭の現象に説明がつきます。

作ってすぐ探すと、見つからない

よくある作りがこれです。Notionにページを作って、その直後に検索で確認する。あるいは、他のツールで作ったものをNotionに入れて、すぐ数える。

20秒以内なら、作ったばかりのものは検索に出てきません。だから件数が1つ足りない。

次に動かすときには索引に載っているので、ちゃんと数えられます。再現しないのは、これが理由です。

毎回ずれるわけでもない

もっと厄介なのは、いつもずれるわけではないことです。

処理の途中に他の作業が挟まっていれば、20秒は経っています。そのときは合います。速く終わった日だけずれる。「たまにおかしい」という形で現れるので、原因を追いにくいです。

図にすると、こういう時間差です

作ってから、検索に出るまで ページを作る ここで存在する 約20秒 検索では 0件 と返る(エラーなし) ここで検索に出る DBの行も約21秒 識別子を指定して取りにいけば、作った直後から読める 遅れているのは検索の索引だけ。ページ自体はすぐ存在している。 だから「作ってすぐ検索で数える」作りは、件数がずれる しかも0件なのか未反映なのか、返りからは区別がつかない。 次に動かすときには載っているので、再現しない。
作成直後から5秒ごとに検索をかけて、見つかるまでの時間を記録した結果です。

関係のないページが大量に返る

2つ目の原因です。こちらは逆方向のずれを生みます。

存在しない言葉で引いても、結果が返る

試しに、どこにも書いていない造語で検索してみました。0件が返ると思いますよね。

296件返ってきました。中身を見ると、その造語とは関係のないページばかりです。

アルファベットの並びのような、日本語として区切れない文字列で引くと0件になります。つまり日本語の言葉は細かく区切られて、その一部でも当たれば返ってくるということのようです。

逆に、途中の文字でも引けます

「ゼータ特有語」というページに対して、「ータ特」という途中だけを切り出した文字列で検索しました。見つかります。

前方一致でも単語一致でもなく、かなり緩い当たり方をしています。

件数を信じてはいけません

ここから言えるのは1つです。検索の結果件数を、その言葉を含むページの数として扱ってはいけません。

「このキーワードを含むページが何件あるか」を数える用途には使えない、ということです。返ってきた中から、自分で絞り込む必要があります。

検索は「探す」には向いていない

2つの性質を合わせると、はっきりします。

足りないほうにも、多いほうにもずれる

索引の遅れで、あるはずのものが出てこない。緩い一致で、ないはずのものが出てくる。両方向にずれます。

しかも、どちらもエラーにならない。正常な結果として返ってきます。

向いている使い方は限られます

では何に使うのか。ざっと当たりを付ける用途には十分です。

「この言葉が出てくるページ、たぶんこのへん」を人が見る。そういう場面なら、多少余計なものが混ざっても困りません。

向いていないのは、機械が数える用途と、存在するかどうかを判定する用途です。正確さが求められる処理に入れないでください。

代わりに何を使うか

では、正確に探したいときはどうするか。

1. 識別子で直接取りにいく

いちばん確実です。作ったときに返ってくる識別子を手元に控えておいて、次からはそれで取りにいきます。

索引を経由しないので、遅れも緩い一致も関係ありません。作った直後から読めます。

同期の仕組みを作るなら、外部のデータとNotionの識別子を対応づけた表を持つのが基本形です。これがあれば、検索を使う場面がほとんどなくなります。

2. データベースの絞り込みを使う

データベースの中を探すなら、そのデータベースに対して条件を指定して問い合わせるほうが正確です。

この列がこの値と一致するもの、という形で指定できます。緩い一致は起きません。索引の遅れも、こちらでは確認していません。

探したいものがデータベースの中にあるなら、検索ではなくこちらを使ってください。ただし、書き込むときに表記が揺れていると一致しなくなるので、入れる側をそろえておくことが前提になります。

3. どうしても検索を使うなら、待つ

作った直後に検索で確認する必要があるなら、20秒以上あけます。

ただし、20秒というのは今回測った値です。混み具合で変わる可能性があります。余裕を見て30秒にするか、見つかるまで何度か試す作りにしておくほうが安全です。

そして、見つからなかったときに「無い」と断定しないこと。まだ載っていないだけかもしれません。

それでも検索を使う場面

使い道がないわけではありません。向いている場面を書いておきます。

ワークスペース全体を見渡すとき

検索は、条件を何も付けなければワークスペースのページをすべて返してくれます。これは他の手段では代わりになりません。

どこにどれだけページがあるかを把握したい、古いページを洗い出したい。こういう棚卸しの用途では、これが出発点になります。

ただし、ゴミ箱に入れたページは検索に出てきません。消したページは印が付いているだけで残っているので、棚卸しのつもりで数えると、消したはずのものが勘定から外れていることになります。

人が目で選ぶとき

候補を出して人が選ぶ、という作りなら緩い一致は欠点になりません。余計なものが混ざっても、見れば分かります。

むしろ、表記が揺れていても拾ってくれるぶん、都合がいい場面もあります。

後片付けの確認に使うとき

これは私の使い方ですが、検証で作ったページを消したあと、残っていないかを確認するのに使っています。

緩く当たるということは、取りこぼしが少ないということでもあります。消し忘れを探す用途では、多めに返ってくるほうが安心です。

よくある質問(FAQ)

20秒は必ず待てば大丈夫ですか。

今回測った値なので、混み具合で変わる可能性があります。余裕を見て30秒にするか、見つかるまで何度か試す作りにしておくほうが安全です。20秒を固定の答えとして埋め込まないでください。

本文に書いた言葉でも検索できますか。

できました。ページのタイトルだけでなく、本文に入れた言葉でも見つかります。ただし、こちらも索引に載るまでの時間はかかります。

データベースの行も検索に出ますか。

出ます。今回の計測では約21秒で出てきました。ただし、データベースの中を正確に探すなら、そのデータベースに条件を指定して問い合わせるほうが確実です。

なぜ関係のないページが返るのですか。

日本語の言葉が細かく区切られて、その一部でも当たれば返ってくるようです。アルファベットの並びのような区切れない文字列だと0件になりました。仕組みの詳細までは確かめていません。

「ページが存在するか」の判定に使えますか。

使わないほうがいいです。索引の遅れで、あるものが出てこないことがあります。判定には識別子を指定した取得を使ってください。

検索の結果は何件まで返りますか。

一度に返る件数には上限があり、続きは印を使って取りにいく形でした。全部を数えたいなら、最後まで取りにいく必要があります。

識別子を控えるところから始めてください

外部のデータとNotionの識別子を対応づけた表を1つ持つ。これがあるだけで、検索を使う場面がほとんどなくなります。件数が合わない、という相談の多くはここで消えます。

Notionを使ってみる

上部へスクロール