Finding Things

Your application offers three separate things that all feel like searching, and they do completely different jobs. Choosing the wrong one is the single most common reason people report that "the search is broken". This chapter explains what each one actually looks at, how the search in the top bar decides what to return, and why something you can plainly see on a record may never come up in it.

The Three Searches

What you useWhere it isWhat it looks at
Global searchThe magnifier in the top bar (and the Cmd+K / Ctrl+K shortcut)Records of many kinds across the whole application — but only the fields someone marked as searchable
Find on pageA small box in the filter bar above a listOnly the rows already drawn on the screen in front of you
FiltersThe Filter button in the same filter barEvery record behind the list, using precise conditions on chosen fields

Read that middle row twice. The small box above a list is not a search of your data. It hides and shows rows that are already on your screen. If your list is showing 20 of 4,000 orders, that box can only ever find something among those 20.

Which One You Want

  • You know roughly what something is called and you do not know where it lives. Use global search.
  • You are already looking at the right list and you want to narrow it down properly. Use filters.
  • You are already looking at a short list and you want to visually pick a row out of it. Use "Find on page...".
  • You want everything matching a rule — all invoices over 50,000, everything created last week, everything assigned to you — use filters. Global search cannot express a rule; it only matches text.

Example Petra is looking for an invoice from a customer called Nováková. She opens the invoice list, types Nováková into the small box above the list and gets nothing, so she reports that search is broken. In fact the list was showing page 1 of 37, and the Nováková invoice is on page 12. Two things would have worked: global search in the top bar, or a filter on the customer field. The box she used was only ever looking at the 20 rows in front of her.

Where It Is

Global search is the magnifier at the right-hand end of the top bar, usually the first item in that cluster of icons. On a normal-width screen it shows the word Search and a small key hint next to it. On a phone-width screen the word and the hint disappear and only the magnifier icon remains.

Clicking it opens a small panel just below the button, holding a single text box with a magnifier button tucked into its right-hand edge.

If there is no magnifier in your top bar at all, see When Global Search Is Missing below — it means the feature has not been switched on for your role.

Opening It With The Keyboard

Press Cmd+K on a Mac or Ctrl+K on Windows and Linux. The panel opens and the cursor lands in the box. Pressing the shortcut again while the panel is open puts the cursor back in the box and selects whatever is already typed there, so you can overwrite it immediately.

Two details worth knowing:

  • The little key hint printed next to the word Search always reads as the Mac shortcut, even on Windows and Linux. On those machines Ctrl+K is what actually works.
  • The shortcut is claimed by the application on every screen, so your browser's own Ctrl+K behavior is not available while you are inside the application.

The full list of shortcuts lives in Keyboard Shortcuts.

  1. Open the panel.
  2. Type your term.
  3. Press Enter, or click the magnifier button inside the box.

Nothing happens while you type. There are no suggestions, no instant results, no list of recent searches. The panel is a plain box, and submitting it loads a separate results page — the whole page reloads rather than updating in place.

Once you are on the results page, the top-bar box stays filled with what you searched for, so you can adjust the term and search again without retyping it.

The Advanced Search Page

The results page is also a search page in its own right. At the top of it sits a card headed Advanced search with:

  • Key words — the text to look for. It is required; submitting it empty gives you "This field is required."
  • Restrict to types? — a picker where you choose one or more kinds of record to search. You can select several. The list is alphabetical and split into two groups: the kinds of record built for your organization, and the application's own built-in administrative ones. The two group headings are shown in English even when the rest of your application is in another language.
  • A Search button underneath.

Restricting to types is the most useful control on the whole page, and the reason is explained under The Result Ceiling below.

Leaving "Restrict to types?" empty searches everything you are allowed to see.

How Matching Works

In plain terms, global search looks for your text anywhere inside a single field's value, ignoring accents and capitalization.

  • Anywhere inside, not just at the start. Typing ova finds a contact called Nováková. Typing ovo finds Novotná. You do not need to know how a value begins.
  • Accents are ignored, in both directions. Typing skoda finds "Škoda", and typing Škoda finds a record stored as "Skoda".
  • Capitals are ignored. ACME, acme and Acme all behave the same.
  • What you type is treated as one continuous piece of text. It is not split into words. Typing john smith only finds values that literally contain "john smith" in that order — not a contact whose first-name field says John and whose surname field says Smith, and not a value written "Smith, John".
  • Each field is matched on its own. A match has to sit inside one field's value. Text spread across two fields never matches as a phrase.
  • There is no relevance ranking. Results are not sorted by how well they match, how recent they are, or alphabetically. Two identical searches can even come back in a different order after your administrator rebuilds the index.

Example Searching for nováková 2024 returns nothing, because no single field contains that exact string. Searching for Nováková returns her contact record and every record whose searchable text mentions her. To combine "Nováková" with "2024" you want a filtered list, not a search.

Two characters behave oddly and are best avoided in a search term: the percent sign and the underscore are treated as wildcards rather than as ordinary characters. If you are searching for something that genuinely contains them, expect surprising results.

Reading The Results

Below the Advanced search card, the results area shows, from the top down:

  1. A heading with the number of results found, followed by the word "results".
  2. A row of buttons, one per kind of record present in the results, each labeled with the plural name of that kind — for example Invoices, Contacts, Projects.
  3. The results themselves, one per row.

The type buttons narrow what is displayed. Click one and only that kind of record stays visible; click the same one again to show everything. They are single-choice — clicking a different one switches to it rather than adding it. This is purely a display filter over the results you already have: nothing is re-searched, the result count in the heading does not change, and no new records appear.

Each result row shows:

  • a small badge with the kind of record (and its icon, if that kind has one);
  • the record's title, underlined;
  • underneath, one small chip per field that matched, showing the field's name in italics and that field's current value. Long values are cut off after about a hundred characters, so a chip can end mid-word.

Clicking a result opens the record in a pop-up window layered over the results page. Close the pop-up and your results are still there, so you can work through several hits without searching again. On some kinds of record your administrator can point the link somewhere else entirely, in which case a result may take you to a custom screen instead.

There is no pager, no sorting control and no page-size control on this screen. What you see is what the search returned.

The Result Ceiling

Global search stops collecting the moment it has gathered 100 field matches, and there is no way to page past that point. There is no "show more". A very common word therefore gives you an arbitrary slice of everything that matched — not the best 100 and not the newest ones.

Note that the ceiling counts field matches, not records. A record whose name, note and reference all contain your term uses up three of the 100 on its own, so the number of records you end up seeing is often well under 100. The cut also happens before your permissions are applied, which is why the count can shrink further.

Three things follow from this:

  • A short or very common term is close to useless. It fills the ceiling with noise.
  • You cannot page your way to the record you want. Narrowing the term is the only remedy.
  • A heading ending in a plus sign is a certain sign you hit the ceiling. Not seeing one is not proof that you did not, because one record can contribute several matches.

There is also no minimum length, so a one-character search is accepted and will do exactly the wrong thing.

Worked example: narrowing a search

Marek is looking for an invoice for a customer whose name he half-remembers as Svoboda.

  1. He types s. The results page fills with an arbitrary mix of contacts, projects, tasks and modules whose text contains the letter s somewhere. The invoice he wants is nowhere on the page, and there is no way to page onward.
  2. He types Svoboda. Much better — around thirty results, but spread across contacts, projects, tasks and invoices, because several records mention that name.
  3. He clicks the Invoices button above the results. Now only invoices remain on screen. If that is enough, he is done.
  4. If it is still too many, he goes to the Advanced search card at the top of the page, keeps Svoboda in Key words, picks Invoices under Restrict to types?, and searches again. This time the ceiling is spent entirely on invoices instead of being shared with every other kind of record, so he sees invoices that were previously crowded out.

Step 3 and step 4 look similar but are not the same. Step 3 hides results you already have. Step 4 runs a new, narrower search and can return records the first search never reached.

Why Something You Can See Is Not Found

This is the section that resolves most complaints. A value being visible on a record does not mean it is searchable. Global search reads a prepared index, and only some things go into that index.

Only fields that were explicitly marked as searchable are indexed. That setting is off unless someone deliberately turned it on. A newly built kind of record, or a field added last week, is invisible to global search until an administrator marks it searchable and the index catches up. Out of the box, only a small number of built-in fields are indexed — user names, e-mail addresses and phone numbers, plus the names of built-in administrative records such as file names and folder names.

Some kinds of field can never be found this way, no matter what is switched on:

  • Dates and date-and-time fields. You cannot find a record by typing a date. Use a date filter on a list instead.
  • Fields that hold many related records at once — for example the list of line items on an order, or the list of participants on an event. You cannot find a parent record by typing the name of one of its children.
  • File contents. Only a file's name may be indexed, never what is written inside the document.
  • Comments, activity history and notifications. Discussion text is not part of global search. See Comments And Mentions.

Fields that point at one other record, and fields where you pick from a list of choices, often do not match on the text you see. These fields display a friendly label but store something else underneath, and it is the stored value that is indexed. Searching for the customer's name will usually not find the invoice that refers to that customer, and searching for a status label like Approved will usually not find records in that status. Both of those jobs belong to filters.

Example Jana wants every project belonging to the customer "Nováková s.r.o.". Global search finds the customer record itself, but not the projects, because a project stores a pointer to the customer rather than the customer's name. What she actually wants is the project list filtered on the customer field — one condition, and it returns all of them, in a list she can sort, export and save. See Filtering Your Data.

Your permissions filter the results twice. Records you are not allowed to see are dropped silently, and fields you are not allowed to see are not shown as chips. If every field that matched on a record is one you cannot read, the whole record disappears from the results. This is why a colleague can find something you cannot with exactly the same search term — see Why Your Screen Differs.

That last point interacts badly with the ceiling: if the matches gathered all belong to records you may not read, you can legitimately get zero results for a term that matches a great many records. If you suspect this, narrow the term or restrict to a kind of record you know you can see.

Why A New Or Just-Edited Record Is Not Found Yet

Global search does not read your live data. It reads an index that is kept up to date in the background.

  • When a record is created or changed, it is queued for indexing. A background job picks the queue up periodically — typically every few minutes on a normally loaded application. Until it runs, the new or corrected text is not findable.
  • After a large change — a bulk import, a mass edit, a big data load — the queue is long and the delay stretches over several of those cycles.
  • Deletions are immediate. A deleted record stops appearing in search straight away, with no waiting. Restoring a record from the trash puts it back into the index straight away too.
  • Very occasionally a record fails to index repeatedly and is then quietly given up on. It will stay missing from search until the record is saved again or an administrator rebuilds the index.

Rebuilding the index is an administrator action, not something you can trigger. It is a single control on an administration screen and it re-reads everything from scratch. Two things are worth knowing about it: on a large application it takes a while, and it clears the whole index first and then refills it one kind of record at a time, so while it runs, search comes back empty and then gradually more complete. If search suddenly comes up empty for everyone for a few minutes, that is very often what is happening.

If a record you saved yesterday is still not findable today, that is not normal waiting — report it and ask for the index to be rebuilt.

When Global Search Is Missing

If there is no magnifier in your top bar, one of these is true:

  • Your role does not have the permission. Global search is controlled by a permission an administrator grants per role, and it is not granted by default in a new application. A freshly created role has it switched off. This surprises people, because administrators always have it and so assume everyone does.
  • Someone deliberately turned it off for your role.

The fix is a request, not a setting you can change:

"Please grant my role the In-app fulltext search permission so the magnifier appears in the top bar."

Two side effects of not having it: the Cmd/Ctrl+K shortcut does nothing at all — the application leaves the key combination alone, so your browser's own behavior for it comes back — and going directly to the search page address bounces you to the sign-in screen with a message about insufficient privileges.

Note that the @-mention picker in comment boxes is a separate thing and keeps working even without the search permission — see Comments And Mentions.

Find On Page

What It Is

Above most lists there is a filter bar, and the first control in it is usually a small box with the placeholder Find on page.... It looks like a search box. It is not one.

Typing in it instantly hides every row currently drawn on the screen whose visible text does not contain what you typed. Delete what you typed and all the rows come back.

That is the entire feature. It never asks the server anything.

What It Cannot Do

  • It cannot see the rest of your data. Only the rows on the current page of the current list exist as far as it is concerned.
  • It cannot see other pages. If the list is showing 20 of 4,000 rows, matches on page 2 stay invisible. Nothing tells you this.
  • It cannot see columns that are not displayed. If the reference number is not one of your columns, you cannot find a row by it here. See Columns, Grouping, Merging And Calculations.
  • It does not change anything else on the screen. The record count, the pagination and any totals or averages under the list keep describing the full result set, not what is left visible. Group headings stay on screen even when every row beneath them is hidden.

Other Things To Expect

  • It resets itself constantly. Any refresh of the list — turning a page, sorting, applying a filter, saving a record in a pop-up — brings every row back, and normally empties the box as well.
  • It matches the whole row. Every piece of text visible in the row counts, including columns you were not thinking about and small badges. Searching for 12 can keep a row on screen because of a number in a cell you were not looking at.
  • Certain punctuation makes it stop working. Characters such as an opening bracket, a square bracket, an asterisk or a plus sign are treated as pattern instructions rather than as text. Typing one can leave the box doing nothing at all until you remove it. A dot behaves as "any single character", so a.b also matches "axb".
  • It does nothing on a calendar screen, where there are no rows to hide.
  • It may not be there at all. Your administrator can remove it from a particular screen's filter bar.

When It Is Genuinely Useful

It is a good tool for exactly one job: you are already looking at a page of rows, and you want to visually isolate a few of them for a moment without disturbing the list. Picking out the three rows containing "urgent" out of the fifty on screen, then clearing the box, is quicker than adding and removing a filter.

For anything you intend to act on, export, count or come back to, use a filter instead.

A Third Box You May Meet

Some screens carry an extra search box that your administrator placed there deliberately — often with a wording of its own, such as "Customer" or "Reference", in place of a generic placeholder. Those boxes do query the whole data set. You can tell them apart from "Find on page..." in two ways: they carry that wording, and often an icon or a magnifier button of their own, instead of the "Find on page..." placeholder; and using one makes the whole list visibly reload, including the record count. They are covered in Filtering Your Data.

When you need to find records by a rule rather than by a scrap of text, filters are the tool. They work on every record behind the list, not on a sample, and they understand what your fields mean: dates get date conditions, numbers get greater-than and less-than, related records get pickers, choices get their option lists.

Filters can also do all the things global search cannot:

  • find by date, or by a date range, or by presets such as "Last 30 days";
  • find by the record a field points to, and even by a field of that related record;
  • find records where a field is empty, or where it is set to anything at all;
  • combine several conditions;
  • and be kept, by saving the result as a view you can return to.

Full detail is in Filtering Your Data, and keeping a filter for later is in Saved Views.

Practical Recipes

You Know The Record's Number Or Reference

Try global search first — reference numbers are usually short, distinctive and stored as plain text, which is exactly what global search is good at. Type the reference on its own, without any prefix you are not certain about.

If nothing comes back, the reference field is probably not marked as searchable. Go to the list of that kind of record and add a filter on the reference field with the "Is" condition. That will always work, and if you need it often, save it as a view.

You Are Looking For A Person

Global search is the right tool. Names, e-mail addresses and phone numbers on the built-in user records are among the few things indexed as standard.

  • Type the surname rather than the full name — Novák rather than Jan Novák — as the safer bet. The built-in user records do keep a combined full name, so a full name works there; but on a contact-style kind of record built for your organization the two halves usually live in separate fields, and a full name will not match as a phrase.
  • Accents do not matter: novak and Novák behave identically.
  • If you get too many people, use the Advanced search card and restrict to the people-shaped kind of record in your application.

You Are Looking For What A Person Is Attached To

This is a filter job, not a search job. Global search will find the person, but not the twenty tickets assigned to them, because a ticket stores a pointer to the person rather than their name. Open the ticket list, add a filter on the assignee field, and pick the person.

You Want Something You Edited Yesterday

Do not use search. Nothing about dates or edit history is searchable.

Open the relevant list and add a filter on a date field — often a "last changed" or "created" field, if your application exposes one. The date filter offers ready-made choices including Today, Yesterday, Last 7 days and Last 30 days, so you do not have to type dates at all. See Filtering Your Data.

If no date field is available to filter on, that is something to ask for.

You Want Every Record In A Given State

Filters, always. Status-style fields store a code underneath their friendly label, so searching for the label text usually finds nothing. A filter on the status field lists the actual choices for you to pick from.

You Want A File

If your application has a file repository screen, use the search box on that screen — it searches file names across folders and tells you how many matches it found. Global search may find files by name if the name field was marked searchable, but it never looks inside the documents. See Uploading Files And Images.

Tips And Gotchas

  • Longer terms are better terms. Because of the result ceiling, a distinctive seven-letter word beats a common three-letter one every time.
  • Restrict to a kind of record when a term is popular. It is the only way to make the ceiling work in your favor.
  • Zero results does not mean the record does not exist. It can equally mean the field is not indexed, the value is stored as a pointer, the record is too new, or you do not have permission to see it.
  • Search does not know about your list. It ignores whatever filters, columns or saved view you had open when you pressed Cmd/Ctrl+K.
  • The result order means nothing. Do not read the first result as the best one.
  • Do not use the results page as a work queue. It cannot be sorted, paged, counted reliably or exported. A saved filtered view can do all of those.
  • After a bulk import, give the index time. A handful of records catches up within a few minutes; a large load works through the queue in batches and can take considerably longer.
  • If search is empty for everyone at once, an index rebuild may be running. Try again in a few minutes before reporting it.
  • The search page heading and the two group headings in the "Restrict to types?" picker are shown in English even when the rest of your application is in another language. That is cosmetic, not a sign of a problem.

What To Ask Your Administrator For

These are all things you cannot change yourself. Phrase your request around the field, not the mechanism.

  • "Please make the Reference number field on Invoices searchable." This is the single most valuable request. Name the field and the kind of record.
  • "Please grant my role the In-app fulltext search permission." Use this when there is no magnifier in your top bar.
  • "Please rebuild the search index." Use this when something saved days ago still cannot be found, or after a large import.
  • "Please add a quick search box for customer to the Orders screen." A purpose-built search control on a list is often better than global search, because it queries the whole data set and understands the field.
  • "Please add a last changed column and make it filterable on Tasks." The way to find recent work.
  • "I need a saved view for open invoices for this customer." Where a search is really a standing question, a saved view answers it every time.

More requests of this shape are collected in What To Ask Your Administrator For.