結論から言うと
はい、Whiziは1つの検索ボックスから2つの層でチャット履歴を検索します。サイドバーの検索ボックスは入力するそばからチャットのタイトルを瞬時に絞り込み、クエリが3文字に達すると、メッセージ本文もサーバー側で検索し、一致したチャットを一致箇所周辺のテキストの抜粋とともにFound in messagesという見出しの下に一覧表示します。
検索ボックスがカバーする範囲:
| 検索対象 | 一致するか |
|---|---|
| チャットのタイトル | はい、入力するそばからブラウザ内で瞬時に絞り込まれます |
| メッセージ内のテキスト | はい、3文字目からサーバー側で検索されます |
| プロジェクトに入っているチャット | はい、1回の検索でプロジェクトと未分類のリストの両方をカバーします |
| サイドバーがまだ読み込んでいないチャット | はい、メッセージ検索は履歴全体を対象に実行されます |
メッセージ検索にはサインイン済みのアカウントと接続が必要です。オフラインなどでリクエストを実行できない場合でも、タイトルによる絞り込みはそれだけで機能し続けます。
2つの層がどのように役割分担しているか
タイトルの一致はブラウザ内で実行されるため瞬時で、クエリの長さに関わらず機能します。メッセージ検索はサーバーへの問い合わせで、Whiziはこれをあえて控えめに使います。クエリが3文字以上になるまで何も送信されず、リクエストは入力が450ミリ秒止まるのを待ち、このセッション内ですでに実行済みのクエリはサーバーに再送されず、キャッシュから返されます。
メッセージ検索は一致するチャットを最大20件まで返します。それぞれが一致箇所周辺のテキストの抜粋とともにFound in messagesという見出しの下に表示されるため、開く前に結果を見分けられます。リクエストの実行中、サイドバーにはSearching messages…と表示され、タイトルにもメッセージにも一致がないクエリではNo chats match your searchと表示されます。
会話の検索には1分あたり20リクエストというレート制限があります。送信前の一時停止とセッションキャッシュがリクエスト数を低く抑えるため、通常の入力ではこの上限に近づくことはまずありません。
古いアカウントで重要になる点が1つあります。サイドバーはチャット一覧をページ単位で読み込みますが、メッセージ検索はサーバー側で履歴全体を対象に実行されます。何か月もスクロールしていないチャットでも、一致すればきちんと結果に返ってきます。
1回の検索ですべてのプロジェクトを横断してカバー
プロジェクトを開くと、そのプロジェクトのチャットだけが表示されます。検索を入力するとこの絞り込みは解除され、プロジェクトと未分類のリストをまたいで一致するため、チャットがどのフォルダに入っていても見つけられ、どこに保存したか覚えておく必要はありません。
それ以外の場面ではプロジェクトは厳格な仕切りで、1つのチャットは最大1つのプロジェクトにしか属せません。これがサイドバーの「それ以外すべて」というビューを成立させています。検索はこの仕切りが無視される唯一の場所です。名前変更や削除、周辺のプロジェクト構造については会話を整理するで扱っています。
また見つけたいチャットは名前を変える
タイトルは今でも最も確実な手掛かりです。タイトルの一致は瞬時で、オフラインでも機能し、メッセージ検索には短すぎるクエリにも対応するため、実際に入力しそうな言葉で名付けられたチャットは何より先に浮かび上がってきます。
名前変更で適用されるルールを、実際に引っかかる順に挙げます:
- 空の名前は
Chat name cannot be empty.として拒否されます - 100文字を超えるとブラウザ側で
Chat name is too long (max 100 characters).として拒否されます - 同じ項目のバックエンド側の上限は120文字で、
Conversation titles must be between 1 and 120 characters.と応答します - 呼び出し自体が失敗した場合は
Failed to rename chat. Please try again.が表示されます
作業のほとんどを担うのは2つの習慣です。動詞ではなく、クライアント名、ファイル名、機能名、決定事項といった、実際に検索しそうな名詞をタイトルに入れること。そして名前変更はセッションの最初ではなく終わりに行うこと。会話が最終的に何についてのものだったかが分かるのはその時点だからです。
インポートしたチャットも他と同じように検索対象になる
WhiziはChatGPTとClaudeからインポートでき、インポートした会話は元のタイトルを120文字にトリミングして引き継ぎます。エクスポートに使えるタイトルがない会話はImported chatになります。各インポーターには専用ページがあり、ChatGPTからチャットをインポートするとClaudeからチャットをインポートするで、想定するエクスポートファイルと引き継がれる内容を扱っています。
インポート後はごく普通のチャットになるため、両方の層がそこに届きます。タイトルは瞬時に絞り込まれ、メッセージ本文もWhizi内で書いたものと同じく3文字目から検索されます。大量のインポートでImported chatという同じ名前の行が並んでしまっても、中身のテキストで検索できるため見分けは可能ですが、また使いたいと思う数件だけ名前を変えておく方が結局は近道です。
インポートはアカウント、ソース、ソースIDの組み合わせをキーに冪等になっているため、同じエクスポートを再実行してもすでに名前を変えた行が重複することはありません。インポート自体が失敗している場合に表示されるメッセージについてはチャットのインポートエラーで扱っています。
検索が適したツールではない場合
3文字未満のクエリはブラウザの外に出ないため、Q3のような2文字の略語はタイトルにしか一致しません。覚えているフラグメントがそれくらい短い場合は、その近くにあるもっと長いフレーズで検索するか、チャットを見つけた後に名前を変えてください。
製品の外で検索したい場合は、アカウントのエクスポートが手段になります。Export DataはSettingsのAccount内にあり、チャットとメッセージに加えて、メモリ、プロジェクトとファイルのメタデータ、メディア、共有リンク、サブスクリプションと紹介プロフィールまで含むアカウント全体を、1つのダウンロード可能なJSONファイルとして返します。そのファイルを好きなエディタで開いて検索してください。エクスポートはアカウントが持つすべてを読み取るため、1分あたり5リクエストにレート制限されています。仕組みの詳細はチャットとファイルをエクスポートするにあります。
- 検索はチャットのタイトルを瞬時に、メッセージ本文は3文字目から検索します
- メッセージの一致はFound in messagesという見出しの下に、一致箇所の抜粋とともに表示されます
- メッセージ検索は一致するチャットを最大20件まで返します
- 1回の検索でプロジェクトと未分類のチャットの両方をカバーします
- メッセージ検索はサイドバーが読み込んだチャットだけでなく履歴全体に届きます
- 名前変更はブラウザ側で100文字、バックエンド側で120文字が上限です
- インポートしたチャットは元のタイトルを保持し、タイトルがないものはImported chatになります
- 製品の外で検索したい場合は、Settingsからアカウントのjsonをエクスポートしてください
よくある質問
Whiziのチャット履歴は検索できますか?
はい、サイドバーのチャット一覧の上にある検索ボックスからできます。チャットのタイトルは入力するそばから瞬時に絞り込まれ、クエリが3文字に達するとメッセージ本文もサーバー側で検索され、一致したチャットはFound in messagesという見出しの下に一覧表示されます。1回の検索でプロジェクトと未分類のリストの両方をカバーします。
メッセージの中身を検索できますか?
はい。3文字目から、検索ボックスはサーバー側でメッセージ本文に問い合わせ、一致するチャットを最大20件まで返します。それぞれ一致箇所周辺のテキストの抜粋とともに表示されます。検索はサイドバーがまだ読み込んでいないチャットも含めて履歴全体で実行され、サインイン済みのアカウントと接続が必要です。
存在すると分かっているチャットが見つからないのはなぜですか?
まずクエリの長さを確認してください。3文字未満だとタイトルしか一致しないため、非常に短いフラグメントではメッセージ本文まで届きません。メッセージ検索には接続も必要で、実行できない間はタイトルによる絞り込みだけが単独で機能します。チャットを見つけたら、実際に検索しそうな言葉に名前を変えておけば、以降は瞬時のタイトル一致で見つけられます。
インポートしたChatGPTやClaudeの会話も検索できますか?
はい、他のすべてと同じ条件で検索できます。インポートした会話は元のタイトルを120文字にトリミングして引き継ぎ、使えるタイトルがない会話はImported chatになります。インポートしたチャットも取り込まれた後は普通のチャットになるため、メッセージ検索もその本文に届き、同じ名前が並ぶインポートの一群でも中身で見分けられます。
検索はプロジェクト内のチャットも見つけますか?
はい。検索を入力するとプロジェクトと未分類のリストをまたいで一致するため、チャットはどのフォルダに入っていても見つけられます。ここはプロジェクトの仕切りが無視される唯一の場所で、それ以外の場所では1つのチャットは最大1つのプロジェクトにしか属さず、それがサイドバーでプロジェクトをそれ以外のものと分けて表示している理由です。