> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pnbr.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Search returns nothing

> An empty search result does not show that the answer is absent, so find which cause applies before you tell the person.

Troubleshooting · core

> **Use when**
>
> A search returned no results, or fewer than you expect, for something that the project should hold.

> **Looking for something else?**
>
> A File that is still processing (problem [A new File is not searchable yet](https://docs.pnbr.io/troubleshooting/new-file-not-searchable-yet.md)). A warning that search by meaning is unavailable (card rule search.2).

## Signs

* `penumbra files search "<query>"` prints no passages and the line `No passages match "<query>".`, followed by a hint.
* The first line reads like `mode: hybrid -> lexical; semantic coverage: none (0/4)`.
* `penumbra search "<query>"` prints `files: 0 passages` and `Nothing matched.`
* MCP: `omnisearch` prints a line that starts with Files: no relevant results when it left out weak matches. The line says how many.
* You saw the File in `penumbra files list`, and the search still skips it.

## Why it happens

One empty result has several causes. Each cause is a different step in the
chain from File to answer.

* **Your words.** Search by exact words needs every plain word of the query in
  one passage. A word from another passage gives no match. The name, tags and
  description of the File count as part of each passage. Penumbra also reduces
  words to a base form and ignores very common words.
* **The File.** Search reads only the current version of a live File that is
  ready. A File in the trash, a File that is still processing, a File that
  failed, and a File with no readable text are all absent. The coverage count
  does not include them.
* **The meaning data.** Search by meaning reads only versions that have their
  data. With none ready, it returns nothing, and a hybrid search falls back to
  exact words.
* **The filters.** A tag, a File id, a collection id or a media type narrows the
  search. A narrow filter can leave nothing.
* **Your access.** A credential limited to a View searches only the Files in the
  View. The rest read as missing.
* **The catalog.** Passages and entities have separate searches. A passage
  search never returns an entity.

## What Penumbra does

By itself:

* Searches the current version of each live File that is ready. It skips Files in the trash, Files still processing, Files that failed and Files with no readable text.
* In exact-word mode, needs every plain word of the query to match. It accepts a phrase in double quotation marks, the word `or`, and a minus sign before a word to exclude it.
* Searches by meaning only the versions whose data is ready, and reports the coverage as `partial` or `none` with a warning.
* Prints the mode you asked for, the mode it used and the coverage with every result of `penumbra files search`.
* Limits a credential that is bound to a View with Files or collections to the Files in the View.
* Searches passages by default in hybrid mode. Entity search through `penumbra graph search` uses exact words by default.
* MCP: `omnisearch` leaves out weak matches by meaning and says so. `penumbra files search` applies no such cut.

You must:

* Read the mode and the coverage before you decide that nothing matches.
* Try the query again as exact words, with fewer words, as a phrase or with `or`.
* Check the state of the File and your own access.
* Tell the person which cause applied, or which causes you could not exclude.

Not handled:

* The coverage count ignores versions that are still processing, so a full count does not prove that the search covered every File.

## Do

1. Run the search and read its first line: `penumbra files search "<query>"`.
   Note the mode and the coverage. If the hint says that no File has searchable
   text yet, run `penumbra files list` and read the status of each File
   (problem [new-file-not-searchable-yet](https://docs.pnbr.io/troubleshooting/new-file-not-searchable-yet.md)).
2. Remove the filters that you passed: `--tag`, `--file-id`, `--collection-id`,
   `--filter-media-type` and `--source`. The hint names the filters you used.
3. Search by exact words with fewer words:
   `penumbra files search "renewal" --mode lexical`. For a phrase, put it in
   double quotation marks inside the query. For alternatives, use `or`.
4. Search by meaning and words together:
   `penumbra files search "<query>" --mode hybrid`. If the coverage is `partial`
   or `none`, only some versions are searchable by meaning. Exact words cover
   the rest. MCP: call `omnisearch` again in lexical mode, with fewer words.
5. Check the File: `penumbra files find "<name>"`, then
   `penumbra files inspect <file>`. The `processing:` line shows the lexical
   state and the semantic state. Run `penumbra files list --trashed` to see
   whether someone trashed the File. If the text is empty or garbled, run
   `penumbra files text <file>` (recipe [check-file-text](https://docs.pnbr.io/guides/check-file-text.md)).
6. Check what you can see: `penumbra access me`. If a View limits you, items
   outside the View look absent, and counts cover the View only (problem
   [hidden-reads-as-missing](https://docs.pnbr.io/troubleshooting/hidden-reads-as-missing.md)).
7. Search the entities too: `penumbra graph search "<query>" --mode hybrid`.
   `penumbra search "<query>"` searches passages and entities in one call.
8. Report the result with its limits. Say what you searched, the mode, the
   coverage, and what you could not see.

## Don't

* Don't tell the person that a fact is not in the project after one empty
  search. The File may be processing, outside your View, or not matched by your
  words.
* Don't read a full coverage count as proof that the search covered every File.
  The count leaves out a File that is still processing.
* Don't search by meaning only (`--mode semantic`) while the coverage is
  `partial` or `none`. That mode skips the versions without data and can return
  nothing.
* Don't upload the File again. The same bytes give the same File and change
  nothing (problem [same-bytes-no-new-version](https://docs.pnbr.io/troubleshooting/same-bytes-no-new-version.md)).

## Check

* The query returns a passage with its File id, version id and passage id:
  `penumbra search "<query>"` prints them on a `cite:` line.
* Or you can name the cause: the words, the File state, the data for meaning,
  a filter, or your View. The person has heard it.

## Related

Card [search](https://docs.pnbr.io/concepts/search.md), with rule [search.2](https://docs.pnbr.io/concepts/search.md#rule-search-2). Card [file](https://docs.pnbr.io/concepts/file.md). Problems
[new-file-not-searchable-yet](https://docs.pnbr.io/troubleshooting/new-file-not-searchable-yet.md) and [hidden-reads-as-missing](https://docs.pnbr.io/troubleshooting/hidden-reads-as-missing.md). Recipes
[check-file-text](https://docs.pnbr.io/guides/check-file-text.md) and [answer-with-citations](https://docs.pnbr.io/guides/answer-with-citations.md).

## Keep going

[Search](https://docs.pnbr.io/concepts/search.md) · [File](https://docs.pnbr.io/concepts/file.md) · [Passage and citation](https://docs.pnbr.io/concepts/passage.md) · [A new File is not searchable yet](https://docs.pnbr.io/troubleshooting/new-file-not-searchable-yet.md) · [Something outside the View reads as not found](https://docs.pnbr.io/troubleshooting/hidden-reads-as-missing.md)

Penumbra Grammar 0.6.26


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.