Search

How Elixion search matches your words, what it ranks first, and what a result row tells you.

Search finds issues, projects, documents, people, agents and sprints across every project you can already see. It is forgiving about word order and about typos, and it is precise about identifiers: type an issue key and that issue comes first.

Opening search

  • Press ⌘K (Ctrl+K on Windows and Linux) anywhere in the app to open the command palette.
  • Click the search bar in the top bar, which reads Search issues, projects, people…. On a narrow screen it is the icon-only button in the same place.
  • Go straight to the results page at /search?q=<your query>.

The palette starts searching once you have typed two characters, waits a moment for you to stop typing, and shows up to eight live results alongside its navigation and create commands. A Search for "…" row opens the full results page for the same query.

⌘J opens Ask Elixion, the AI composer. That is a different thing from search.

How matching works

A query is split on whitespace into words, and a result has to contain every word, in any order, and not necessarily next to each other. A word may be found in any of the fields that type searches, so two words can be split across a title and a description and the row still matches.

That means remove waterfall finds Remove the Waterfall methodology option.

Things worth knowing:

  • Matching is case-insensitive substring matching per word. There are no wildcards: % and _ are searched for as the characters you typed.
  • There is no OR operator and no quoted-phrase syntax. Typing login OR authentication searches for three words, including the literal word or. Quotes are matched as quote characters.
  • At most the first eight distinct words of a query are used.
  • A query made entirely of punctuation is searched for as itself rather than matching everything.

For field-and-operator queries (status != DONE AND assignee = currentUser()), use EQL. See EQL Query Language.

Typo tolerance

If nothing matched strongly, search retries with a typo-tolerant pass. Watrfall finds Waterfall.

  • Tolerance is exactly one edit per word: one inserted, deleted or substituted character, or two adjacent characters swapped. Two edits are deliberately not matched.
  • Words shorter than four characters get no typo handling. A single edit is most of a three-letter word, and the results would be noise.
  • The retry only runs when nothing matched a title or a name. A word buried in a description body does not count as an answer, so it does not switch typo handling off, and a query that does hit a title never pays for the extra pass.
  • Exact spellings still rank above near misses inside the same result set.

If a typo-tolerant pass is not finding it either, type more of the word correctly, or search by key.

What ranks first

Every match starts at a base score, gains a point for each of your words found in the row's main field (its title, name or username), and gains a large bonus when one of your words equals an issue key or a project key.

The bonus is for equality, not for a prefix, so searching PAY-15 does not lift every PAY-15xx issue with it. Only issues and projects have keys, so only they can earn it.

Ties are broken by most recently updated, falling back to most recently created.

Result types

Results are grouped by what they are:

| Group | Matches on | Notes | |---|---|---| | Issues | title and description | archived issues are left out | | Projects | name and description | an exact project key ranks first | | Documents | title and body | | | People | name and username | only people who share a project with you, plus yourself | | Agents | name and description | archived agents are left out | | Sprints | name and goal | scoped like issues, links to the sprint |

Comments are not searched. Comment bodies are not indexed, so a comments search returns an empty result rather than pretending to have looked. Comment text is reachable on the issue itself.

Everything you see is already scoped to what your account can reach. Search cannot be used as a directory of people you do not work with, and it cannot show you a project you cannot open.

What a result row shows

On /search, each row reads, left to right:

  1. the issue-type icon, for issues only, with a neutral fallback icon for a type it does not recognise
  2. the key in monospace, for issues and projects
  3. the title
  4. the project name, right-aligned

A two-line snippet sits underneath. Documents, people, agents and sprints have no key, so those rows start at the title.

Above the groups, the header shows the total number of hits and how long the query took.

In the palette, each live row carries a type icon and a subtitle made of the result type and its project.

Keyboard

| Key | Action | |---|---| | ⌘K / Ctrl+K | open or close the command palette | | ↑ / ↓ | move the selection, wrapping at either end | | ↵ | open the selected row | | Esc | close the palette |

While the arrow keys are driving the list, hover highlighting is suppressed, so only one row ever looks selected. Moving the mouse hands the highlight back.

Limits

  • A query is 1 to 500 characters.
  • At most eight distinct words per query are used.
  • The palette shows at most eight results. The full results page requests fifty in one go, so use Search for "…" when the palette is not showing you enough.
  • A global search considers at most 200 rows per result type before merging and ranking them.
  • Snippets are trimmed to 300 characters.
  • The results page has no filter, sort or type controls; it shows one relevance-ranked page grouped by type. The underlying endpoint does accept a type, a project, a page, a page size up to 100 and a sort order, so a script can narrow what the page shows in one list.

Search compared with EQL

They answer different questions.

| | Search | EQL | |---|---|---| | Covers | issues, projects, documents, people, agents, sprints | issues only | | Input | words | fields, operators and functions | | Matching | substring, typo-tolerant, ranked | exact, structured, unranked | | Order | relevance, then recency | newest first by creation date | | Where | ⌘K and /search | the API and the Claude connector |

Use search when you know roughly what something is called. Use EQL when you know exactly what you want and need to say so precisely: everything due this week that is not done, or every unassigned critical bug.


Next: EQL Query Language