Page tree
Skip to end of metadata
Go to start of metadata

Search and Filtering

In Inventory, we have implemented a button group to toggle between searching on the instance, holdings, or item level.

Search and filter options can be combined.

Search in the Instance segment supports search on bibliographic data.

Search in the Holdings and Item segments are a combination of key data from the Instance record, combined with holdings and item specific data elements. 

Search / filter options in Orchid

Search options

Filter options

Query Search using CQL (Instance, Holdings, Item segment)

For Kiwi the Query Search functionality (CQL) is limited to be only indexes supported by mod-search (Elasticsearch/OpenSearch). 

 (Please note that this page defaults to the master list, which may differ from your version of mod-search. To find your version of mod-search, in Folio go to Settings→Software versions, then look for mod-search. On the github page, there is a drop-down menu at the top that you can choose your version from.)

Supported search options



Electronic Access (all)

Example: electronicAccess any "resource"

Electronic Access (all)

Example: holdings.electronicAccess any "resource"

Electronic Access (all)

Example:  items.electronicAccess any "resource"

Electronic Access - URI

Example: electronicAccess.uri="*"

Electronic Access - URI

Example: holdings.electronicAccess.uri="*"

Example in Bugfest Lotus: holdings.electronicAccess.uri="*"

Electronic Access - URI

Example: items.electronicAccess.uri="*"

Example in Bugfest Lotus:


Electronic Access - Public Note

Example: electronicAccess.publicNote="a rare book"

Electronic Access - Public Note

Example:  holdings.electronicAccess.publicNote="a rare book"

Electronic Access - Public Note

Example: items.electronicAccess.publicNote="a rare book"

Electronic Access - Link Text

Example: electronicAccess.linkText="Folio website"

Electronic Access - Link Text

Example: holdings.electronicAccess.linkText="Folio website"

Electronic Access - Link Text

Example: items.electronicAccess.linkText="Folio website"

Public notes

Example: publicNotes all "public note"

Public notes

Example: holdingPublicNotes all "public note"

Public notes

Example: itemPublicNotes all "public note"

Holdings notes

Example: holdings.notes.note all "librarian note"

Circulation notes (all)

Example: items.circulationNotes.note all "circulation note"


Example: id=="1234567"

All call number data elements

Example: holdingsFullCallNumbers="cn*434"

All call number data elements

Example: itemsFullCallNumbers="cn*434"

Alternative Titles

Example: alternativeTitles.alternativeTitle all semantic web

All holdings identifiers

Example: holdingIdentifiers = 1234

Normalized call number:

Example: itemsNormalizedCallNumbers="cn434"

Uniform Title

Example: uniformTitle all semantic web

Item UUID:

Example:  itemIdentifiers all "81ae0f60-f2bc-450c-84c8-5a21096daed9"


Example: series all Cooperative information systems


Example: publisher all MIT

Classification Number

Example: classifications.classificationNumber==025.04

Using boolean operators in Query Search (AND, OR, NOT)

When using Query Search, you can combine search terms with Boolean operators (AND, OR, NOT). 

You can also search on e.g. multiple ISBNs; e.g. Query search: isbn=9780763653378 OR isbn=0312087608 OR isbn=9781938461026 in Bugfest Orchid:

Query search also supports search on primary contributors; e.g. Query search:  contributors all "John" and contributors.primary==true in Bugfest Orchid:

Using Filter/Facets

When doing a search, then you can narrow down the search by using the filter/facet. Once you click on a filter/facet, you will only see the results that are relevant to your search. E.g., if you click the Effective location filter, it will only show you the locations contained in your search results, not the entire list of possible locations.

You can also choose to only use the filter/facets. E.g. get the result of all books in the collection in Swedish.

Search across all data properties

With elasticSearch, we can search across all three record types (instance, holdings, item) on values in any property. This is disabled by default, and must be turned on by your hosting provider or systems administrator.

Note that because this is disabled by default, it is not enabled on any of the reference environments.

Example: cql.all all "web semantic"


Search by all field values in the instance 

Example: cql.allInstances any "1234567"

Search by all field values in the holdings

Example:  cql.allHoldings all "ho001"

Search by all field values in the item

Example: cql.allItems all "book"

Advanced search (pending development)

Here some new UX mock ups for how Advanced search is envisioned, and expected to be implemented consistently across all apps supporting advanced search:

Examples that Advanced search will support:

  • cql.allRecords=1 NOT contributors=Smith matches all records where contributors name does not contain Smith as a word
  • cql.allRecords=1 NOT name="" matches all records where name is not defined.
  • cql.allRecords=1 NOT name=="" matches all records where name is defined and not empty or where name is not defined.


  • Call numbers
  • Subject

See UX-mock ups (Work in progress

Querying date fields

The instance record has several different types of data fields. 

Instance date fields - dateOfPublication and publicationPeriod

  • publication.dateOfPublication
  • publicationPeriod.start and publicationPeriod.end
    • publicationPeriod is meant to support sorting search results by publication date. It is a derived value field based on the values in dateOfPublication - see MODINVSTOR-724 - Getting issue details... STATUS for requirements on how start and end are populated based on dateOfPublication

Querying for publication date ranges

If your use case involves querying for instances based on publication year, consider searching on publicationPeriod rather than dateOfPublication. Even though publicationPeriod is not shown in the FOLIO Inventory UI, it is normalized year data from the publicationPeriod, so using it in your query can ensure that you are searching on a year and not having to worry about punctuation or other potential "stuff" in the data.

Instance, Holdings and Item date fields - metadata object

  • Metadata
    • This is a standard object present for almost all FOLIO records that tracks the FOLIO account that created the record, the FOLIO account that last updated the record, the date/time the record was created, and the date/time the record was last updated

Tips for searching

Quotations marks will generally be added for you, but you can also type them yourself. If you make a mistake typing and go back to edit, you may need to enter the quotation marks manually.

Occasionally you might have to play around a bit with the space bar and re-enter have gone back to edit something.

If you only want to do a keyword search, you can simply enter the search term.

Documentation on GitHub

Documentation on GitHub - see here

Search across all data elements - see here

  • No labels


  1. Charlotte Whittwill Elasticsearch still support query searching on fields not included as part of the Elasticsearch indexes?

  2. Molly Driscoll- yes when we implement MSEARCH-182 in the UI (see: UIIN-1645)

  3. Thank you Charlotte Whitt . Do you know if this will be completed for the Kiwi release?

  4. Yes, it will not. Kiwi feature freeze has passed. 

  5. Charlotte Whitt, thank you for clarifying. What do we propose libraries use for a method of searching non-indexed fields in the interim between the rollout of Elasticsearch and the implementation of UIIN-1645? Will a backend search via API be supported? Are there other options? I'm trying to understand the implications for libraries I'm working with who plan to go live on Kiwi, but have data in fields not listed above that they need to search for their workflows. I appreciate any additional information you can provide!

    1. Thanks Molly Driscoll. As one of the libraries going live on Kiwi, we're very interested in this. I've been telling people they can use Query Search for non-indexed fields, without realising until now that Query Search won't be available when we go live.

  6. You can use query search Tim Darlington, but for Kiwi it will be limited by the specific searches there have implemented in the back end (the mod-search work) - see more:

    As soon as we have the Bugfest work behind us, then better user documentation on the Tips and trick page will be written up and examples listed. 

  7. Charlotte Whitt I would appreciate to get your help (or anybodie's who is able to give support): there are 5 different (question) types of call numbers mentioned in the search keys within Inventory:

    • Instance → call number
    • Holdings → call number, eye redable + call number, normalized
    • Item → effective call number Item), eye readable + effectice call number (item), normalized

    What is the difference between these types? Which fields are indexed for the different searches? What kind of normalization is performed to call numbers and where is it documented (I found very little about that topic here:

    Thanks for helping me out of my confusion (smile)

  8. Hi Rita Albrecht - the different search keys defines whether the call number is search able

    1. in browsable form
    2. as entered in the record (eye readable),
    3. in normalized form (so searchable without spaces, punctuation, parenthesis etc)

    An exhaustive spec of search on call numbers normalized and eye readable was done by a MM-SIG working group:

    That spreadsheet has two tabs: one for normalization, and one for eye readable, with many examples of real call numbers, with and without prefix and suffix for the call number. 

    I hope this helps.

    If you have suggestions for how we can improve the documentation in - please let me know, and we can work on this together, looping in also the Spitfire/Falcon team.