全文検索を使う
一覧の URL に q を付けると、語を含むエントリーだけを取り出せます。サイトの検索の欄から、記事を探すときなどに使います。
- [読み取り]の権限のある API キー。発行のしかたは API キーを作る、権限を決める にあります
- 検索できるのは、コレクションの一覧だけです。1 件やシングルを取り出す URL に
qを付けると400になります
下の例では、<ホスト名> をあなたの環境のホスト名に、<API キー> を API キーに置き換えてください。コンテンツタイプ ID は「posts」の例です。
「Rust」と「入門」の両方を含むエントリーを探します。語は空白で区切ります。
curl -G https://<ホスト名>.hakocms.net/api/v1/content/posts \ -H "Authorization: Bearer <API キー>" \ --data-urlencode "q=Rust 入門"当てはまるエントリーが、関連の強い順に items に入って返ります。total は当てはまる数です。返る形は、ふつうの一覧と同じです(エントリーを取り出す)。
{ "items": [ { "sys": { "id": "rust-intro", "contentType": "posts", "version": 2 }, "title": "Rust 入門" } ], "total": 1, "limit": 20, "offset": 0}(sys の日時は省いています。)
探す決まりは次のとおりです。
- 探す先は、テキスト、テキストエリア、リッチテキストのフィールドです。カスタムや繰り返しのフィールドの中も探します
- 空白で区切った語を、すべて含むエントリーが当てはまります
- 記号や空白だけのときは、絞り込みません。すべてのエントリーが返ります
orderを付けなければ、関連の強い順に並びます
サイトの検索の欄からつなぐ
Section titled “サイトの検索の欄からつなぐ”検索の欄に入れられた語を、q にそのまま渡します。URLSearchParams がエンコードします。
async function search(keyword) { const params = new URLSearchParams({ q: keyword, limit: "10" }); const res = await fetch( `https://<ホスト名>.hakocms.net/api/v1/content/posts?${params}`, { headers: { Authorization: "Bearer <API キー>" } }, ); const { items, total } = await res.json(); return { items, total };}
console.log(await search("Rust 入門"));公開中のエントリーを探すだけなら、[読み取り]だけのキーをブラウザで使ってかまいません。
ほかのパラメーターと組み合わせる
Section titled “ほかのパラメーターと組み合わせる”q は、where、order、limit、offset と一緒に使えます。2026-10-01 からあとに公開した記事の中で、新しい順に探します。
curl -G https://<ホスト名>.hakocms.net/api/v1/content/posts \ -H "Authorization: Bearer <API キー>" \ --data-urlencode "q=Rust" \ --data-urlencode 'where=sys.publishedAt >= "2026-10-01"' \ --data-urlencode "order=-sys.publishedAt"order を付けると、関連の強さではなく、order の順に並びます。where と order の書き方は 絞り込む、並べる、ページに分ける にあります。
preview=true を付けると、下書きの値で探します(下書きを取る)。
管理画面でエントリーの本文にある語を q に入れて、そのエントリーが items に入って返れば、検索できています。
当てはまらないときは、次を確かめてください。
- エントリーが[公開中]になっているか。下書きの値は、
preview=trueを付けないと探しません - 語が、テキスト、テキストエリア、リッチテキストのフィールドに入っているか。数値やセレクトなどのフィールドは探しません
- 空白で区切った語を、すべて含んでいるか