Full-Text Search

Search across collections with relevance ranking, highlights, suggestions, and similar-document lookup. Indexes are managed per collection — define searchable fields in your schema or rebuild via the API.

SDK

const results = await db.search.search("alice", {
  collections: ["users"],
  limit: 10,
  fuzzy: true,
});

const suggestions = await db.search.suggest("ali");
const similar = await db.search.findSimilar("users", "doc-id");
const status = await db.search.getIndexStatus(["users"]);

REST API

# Search
curl -X POST https://api.paperdb.app/search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"hello","collections":["posts"],"limit":20}'

# Suggestions
curl -X POST https://api.paperdb.app/search/suggest \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"query":"hel","limit":5}'

# Rebuild index (secret key)
curl -X POST https://api.paperdb.app/search/index/users/rebuild \
  -H "Authorization: Bearer YOUR_SECRET_KEY"

Mark fields searchable in your schema with field("title").searchable() or collection(...).searchable(["title", "content"]). Without explicit fields, PaperDB searches common names like title, content, and email.