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 withEnteron 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".
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 kind | Matched on |
|---|---|
| Documents | Title only. Not body text, not block content. |
| Files | Filename only. |
| Data records | Display ID, plus the contents of any text-typed column. |
| Tables, result types, item types | The table name, plus its column names. |
| Marketplace packages | Name and description. Opt-in: searched only when you pick that type, and only when no workspace-scoping filter is set. |
| Everything else | The 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.
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.
| Control | What it does |
|---|---|
| Type | One searchable type, or All Types. |
| Find a table or result type | Any 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. |
| Environment | Limit to one data environment. |
| Project | Limit to one project. |
| Author | One workspace member, picked by name. |
| Created | An after / before date pair. |
| Updated | Any time, Last 7 days, Last 30 days, Last 90 days. |
| Include archived | Bring archived entities back into the results. |
| List / Table | View 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.
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
The type icon on a result row is decorative. Filters are set only from the controls at the top of the search page.
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.