Boolean Searches? (Specifically the NOT operator)

Scrivener has no native support for defining Booleans within a query, just as a function of the overall search. So for more complex searches, you need to use a multi-stage approach instead—and that has improved a bit over the years. The basics go like this:

  1. You run your first search, the one you want to subtract from. That gives you a search result list to work from.

  2. Second, there are two options:

    • If the type of thing you wish to subtract is supported by the corkboard/outliner filter feature (just hit ⌘F like you would search for text), then you click the “hook” button to load the search results into the editor and filter it further. Sorting by columns is also a possibility for narrowing things down—not in that it filters the result, but you can isolate the cluster of items more easily if they are grouped together.

    • If the thing you need to filter by cannot be done with that tool (and keywords cannot be), then the goal is to use project search again, but this time using the previous search result as the basis, instead of the entire binder.

      1. In the search results sidebar, press ⌘A to Select All, and then ⌥⌘R to Reveal in Binder.

      2. Without touching anything that would alter the selection, search for the second keyword you wish to omit.

      3. Click on the magnifying glass icon next to the search term, and set both of the following options:

        • Search Binder Selection Only
        • Invert Results

After having done this, you may want to preserve the list of results for a time: select all of the search results and then use the Documents ▸ Add to Collection ▸ New Collection....

And as you can imagine, these methods can be repeated, for more complex three-way results, or even to combine two different result lists together (via a collection), and then whittle down from there.