Skip to main content

Full Text Search: search inside your documents, not just their names

Search the contents of your documents, not just their names. How Full Text Search (FTS) works and how it protects your data.

C
Written by Casey Huxtable

Until now, search in Kivo could only match on document names and metadata. With Full Text Search (FTS), you can now search the content of the documents your team has uploaded.

Why we built It

Customers consistently told us that finding the right document meant either knowing exactly what it was called or scrolling through folders. As organizations accumulate thousands of submissions, protocols, and supporting documents, that approach stops working. FTS closes the gap: type what you remember from the document itself, and Kivo finds it.

How it works

When a document is uploaded or updated, Kivo's indexing service extracts the text from the file (PDF, Word, Excel, and PowerPoint formats are supported) and adds it to a dedicated search index. Each entry in the index is tagged with the document's organization and folder-level permission data, so queries can be filtered against both the user and the content in a single step.

When you run a search, Kivo queries the index, ranks results using standard relevance signals (term frequency and document importance), and returns matches alongside your existing metadata-based results. FTS works with the filters you already use, so you can narrow content searches the same way you narrow metadata searches.

You can refine queries with two operators:

  • Exact match - wrap a phrase in quotes to match it in that exact order, e.g. "product XYZ".

  • AND / + - require multiple terms to appear together, e.g. product XYZ AND protocol.

Indexing runs automatically. New documents and new versions are picked up without any action from you, and results typically return within a few seconds.

Security and privacy

Because FTS reaches into the contents of your documents, we held it to the same access controls that protect the documents themselves. Specifically:

  • Strict permission enforcement. Every entry in the search index carries the permission data of the underlying document version. When you run a query, the index returns only documents you already have folder-level access to. If a document matches the search term but the user doesn't have permission to open it, it will not appear in your results, full stop.

  • Organization scoping. Searches are always scoped to your organization. Kivo is multi-tenant, but the search index is partitioned so that a query issued in one organization cannot reach documents in another. This is enforced at the API layer, not just the UI.

  • Draft-aware indexing. Both the approved and most recent draft versions are indexed.. Users who have access to the document but not to its draft versions will not see search hits that came from draft content. The index respects the distinction between published and in-progress material.

  • Unblinded content is never indexed for content search. Documents marked as unblinded continue to appear in search by name and metadata, but their contents are deliberately excluded from the full text index. This protects the integrity of blinded studies

  • Controlled rollout. FTS is governed by a per-organization feature flag. When the flag is disabled, search behaves exactly as it did before, only metadata matches are returned, and no document content is ever queried. This gives your administrators a clean on/off control for the capability.

  • Same data, same protections. The text we index lives inside Kivo's existing infrastructure and inherits the same encryption, access logging, and tenant-isolation controls that already apply to your documents. No document content is sent to third parties or used to train external models.

Interested in enabling FTS?

Full Text Search is available as an organization-level feature in Kivo. If you'd like to enable it for your team, contact the Kivo team.

We're continuing to improve relevance ranking, expand file coverage, and evolve the search experience based on how customers use it in practice.

Did this answer your question?