Search syntax and filters

Full-text plus filters by type, date, project and environment.

Workspace search matches plain text against a handful of columns, ranks the hits, and lets you narrow them with filter controls. This page is the reference for what gets matched, how it is ranked, and which filters exist.

Where search lives

  • Command palette (⌘K): quickest, best for "I know it's named X". No filter controls. See Command palette.
  • The search page at /workspaces/<workspace-id>/search: the same engine with every filter exposed. Reach it from the palette with Enter on an empty selection, or with Browse all workspace items.
  • In-product chat: the assistant's search tool calls the same service for its entity hits, and runs a second, separate semantic pass over indexed content: the Dalea wiki, document text, data schemas, inventory and templates. That second pass is the only way document body text is searched at all.

How matching works

Your query is lowercased and used two ways against each candidate column: as one literal substring, and as a fuzzy trigram comparison that tolerates a typo or a partial word. That is the whole mechanism.

Everything you type is part of the text being matched, punctuation included. Only the literal-substring leg needs your words contiguous and in order; the trigram leg does not, so baseline weight matches both "Baseline weight day 0" and "Weight at baseline".

There is no query syntax

Quoted phrases, -exclusions, field:value terms, before: / after: dates and boolean AND / OR are not parsed. Typing them searches for those characters. Structured narrowing is what the filter controls are for.

Leaving the query empty on the search page switches it into browse mode: the filters alone decide the result set and it is ordered by recency. The command palette needs at least two characters before it queries the server.

What each result kind matches

Result kindMatched on
DocumentsTitle only. Not body text, not block content.
FilesFilename only.
Data recordsDisplay ID, plus the contents of any text-typed column.
Tables, result types, item typesThe table name, plus its column names.
Marketplace packagesName and description. Opt-in: searched only when you pick that type, and only when no workspace-scoping filter is set.
Everything elseThe entity's own name.

"Everything else" is projects, folders, environments, templates, saved queries, result batches, naming schemes, dashboards, groups, addons, addon views, containers, lots, container types, label templates and calendar events. Their descriptions are not searched, only their names.

Inventory items need the item filter

An unfiltered search covers data records but skips inventory items. To find an item by name, set the type filter to Item.

Filter controls

All of these live at the top of the search page.

ControlWhat it does
TypeOne searchable type, or All Types.
Find a table or result typeAny table across every environment. Picking a data or item-type table scopes results to its records and fills in its environment; picking a result type opens that type's browse view instead.
EnvironmentLimit to one data environment.
ProjectLimit to one project.
AuthorOne workspace member, picked by name.
CreatedAn after / before date pair.
UpdatedAny time, Last 7 days, Last 30 days, Last 90 days.
Include archivedBring archived entities back into the results.
List / TableView toggle. Appears once the results include data records.

Filters compose with AND. The Author filter stores a member's user id, not their name, so an author is always picked from the list rather than typed.

Several filters also narrow which result kinds can come back, because the filter only makes sense for some of them:

  • Environment leaves data records, items, tables, result types and item types.
  • Author leaves documents, files, data records and items.
  • Project leaves documents, files, data records, items, folders and result types. Entity and item-type tables are not project-scoped, so they drop out.
  • A table scope leaves data records and items, since an inventory table's rows are items.

Results page 25 at a time on the search page. The palette fetches up to 50 in one go and shows the total in its section heading.

A configured search is a link

The search page keeps its filters in the URL (q, type, env, table, project, createdBy, createdAfter, createdBefore, archived), so you can paste a search to a colleague and they see the same one. The Updated preset and the List / Table toggle are the two controls not carried in the URL, so a pasted link opens in list view unless it carries a table scope, which switches to the table view on its own.

Realistic searches

Everything in one study, this week
Leave the query empty, set Project to the study and Updated to Last 7 days. Browse mode lists it all by recency.
One antibody lot
Type the lot code. Records whose text columns contain it match, along with any file, document, container or lot named after it.
Every row of one table
Leave the query empty and pick the table in the table picker. The view switches to the columnar table layout, where you can sort and filter per column.
A colleague's recent uploads
Set Type to File and Author to them, then set a Created after-date.

Result ranking

Relevance first, then most-recently-updated, then a stable id tiebreak so paging never repeats or drops a row.

Relevance is scored from 0 to 1, and it is the higher of two numbers rather than a ladder with a fallback. The first is a fixed ladder on the matched column: 1.0 if the column equals your query exactly, 0.9 if it starts with your query, 0.6 if your query appears somewhere in it, 0 otherwise. The second is a trigram similarity score, computed for every row, not only for the rows the ladder missed.

The trigram score reaches 1.0 whenever your query covers whole words of the value, wherever in the value they sit and in whatever order, so weight scores 1.0 against "Baseline weight day 0" and ties an exact match. The 0.9 and 0.6 rungs only ever decide anything for mid-word fragments: bas scores 0.9 against that same value because its trigram score is only 0.75.

Two indirect matches score on their own: a data record found through one of its cell values scores 0.55, and a table found through one of its column names scores 0.5. Both therefore sit below a direct substring hit on the name or display ID.

In browse mode every score is 0, so ordering is pure recency.

There is no authorship or collaborator boost, and no keyword stop-list: Greek letters, special characters and unit abbreviations are all matched like any other text.

Tips

Filters come from the controls

The type icon on a result row is decorative. Filters are set only from the controls at the top of the search page.

Cross-workspace search does not exist

Search is workspace-scoped, and the AI assistant is bound to the same single workspace, so it cannot widen the net either. To look in another workspace, switch to it with the workspace switcher and run the search again.

What's next