Text search across the Foundry platform, including in Object Explorer, Workshop, and the Functions API, relies on an underlying search engine that processes text through a mechanism called an analyzer. Understanding how analyzers work helps you write more effective search queries and build better search experiences in your applications.
When a string property is indexed for search, the platform processes its value through an analyzer. The default analyzer, called the standard analyzer (see Lucene StandardAnalyzer ↗), performs the following steps:
For example, a property value of The Quick Brown Fox is stored as the tokens the, quick, brown, and fox. When you search for quick, the search engine matches this token against the stored tokens and finds a match.
This token-based approach has important implications:
brown fox evaluates the brown and fox tokens separately, so it matches any property containing both tokens regardless of order or proximity. To require the tokens to appear together in order, use a phrase search ("brown fox").rown does not match brown because rown is not a complete token.The analyzer used for a string property is configured in the Ontology. The following analyzer types are available:
| Analyzer | Behavior | Example value | Resulting tokens |
|---|---|---|---|
| Standard (default) | Splits on whitespace and punctuation, converts to lowercase | The Quick-Brown Fox | the, quick, brown, fox |
| Simple | Splits on any non-letter character, converts to lowercase (digits and punctuation are dropped) | The Quick-Brown Fox 42 | the, quick, brown, fox |
| Not analyzed | Stores the entire value as a single token | The Quick-Brown Fox | The Quick-Brown Fox |
| Whitespace | Splits on whitespace only, preserves case | The Quick-Brown Fox | The, Quick-Brown, Fox |
| Language | Applies language-specific tokenization, stemming, and stopword removal | Running quickly (English) | run, quick |
The Language analyzer supports the following languages: english, french, german, japanese, korean, arabic, and combined_arabic_english.
You can check or change the analyzer for a property in the Ontology Manager under the property's search configuration. Properties must have the Searchable render hint enabled to be searchable.
The standard analyzer treats underscores and periods as part of a token rather than as separators. This means:
banana_pudding is stored as a single token banana_pudding, not as banana and pudding.user.name is stored as a single token user.name, not as user and name.A search for banana will not match the value banana_pudding when using token-based search methods. If you need to match such values, use a wildcard search like banana* or consider using the whitespace analyzer.
Object Explorer remains the primary interface for Ontology discovery, global search, and viewing individual objects. Insight builds on Object Explorer to provide expanded analysis features and is available alongside it.
Object Explorer provides two search interfaces, each with different matching behavior.
The global search bar on the Object Explorer home page and results page performs a token-based search across all searchable properties of all object types. By default, each word in your query is searched independently using OR logic. For example, searching for yellow cab returns objects matching either yellow or cab.
You can modify this behavior using the search syntax features described in Search syntax:
"yellow cab") to require an exact phrase match.* to match zero or more characters, or ? to match a single character. Both trailing wildcards (term*) and leading wildcards (*term) are supported. Note that combined leading-and-trailing wildcards (such as *row*) are not supported.~ to a term to find approximate matches.Leading wildcard search (*term) is only available for string properties that have the Enable leading wildcards render hint enabled in the Ontology Manager. The Searchable render hint must also be selected. For more information on configuring render hints, see Render hints.
Leading wildcard search is not supported in the global search bar. It is available only when filtering on individual string properties in an exploration.
When exploring a specific object type, you can add keyword filters on individual string properties. These filters offer the following match modes:
| Mode | Behavior |
|---|---|
| Contains (default) | Matches objects where the property contains all search tokens |
| Starts with | Matches objects where the property contains a token starting with the search term (equivalent to term*) |
| Exact | Matches objects where the property value exactly matches the search term |
| Is not | Excludes objects where the property contains the search tokens |
Property keyword filters match against individual tokens produced by the property's analyzer. If a property uses the not analyzed analyzer, the entire value is treated as a single token and must be matched accordingly.
Leading wildcard search allows you to find objects where a property value ends with a specific term. For example, searching for *smith matches values such as Goldsmith, Blacksmith, and smith.
To use leading wildcard search, you must enable the Enable leading wildcards render hint on the relevant string properties:
For the full list of available render hints, see Render hints.
Once the render hint is enabled, you can use leading wildcards in Object Explorer property filters by prefixing your search term with *. For example:
*smith matches Goldsmith, Blacksmith, and smith.*ing matches running, swimming, and ing.Combined leading-and-trailing wildcards (*term*) are not supported. You can use either a leading wildcard (*term) or a trailing wildcard (term*), but not both at the same time. If you need partial string matching, consider using Contour or the Regex mode in a Workshop Filter List.
Workshop provides several ways to search and filter objects, each with different capabilities.
The Filter List keyword search component supports five search modes, selectable by the user at query time:
| Mode | Behavior |
|---|---|
| All | Broadest search. Combines token matching, wildcard matching, and prefix matching to return any results that partially or fully match the query. Wildcard sub-matches compare the query directly against indexed tokens without applying the analyzer to the query, so wildcard queries work most predictably on properties using the Not analyzed or Whitespace analyzer. |
| Any | Matches objects where the property contains any search tokens |
| Exact | Matches objects where the property contains all search tokens as an exact phrase, in order |
| Advanced | Supports Boolean syntax with AND, OR, NOT, quotation marks, and parentheses for complex queries |
| Regex | Matches objects using a regular expression pattern against the property tokens |
For more details on advanced filtering, see the Filter List advanced filtering documentation.
The Exploration Search Bar widget in Workshop uses the same search infrastructure as the Object Explorer global search bar. It supports the same syntax including quotation marks for phrase search, logical operators, wildcards, and fuzzy search.
Object set filter variables support a CONTAIN filter that performs prefix-only matching. For example, if a property value is id000123 and the filter query is id0001, this is considered a match. However, the query d0001 would not match because it does not start at the beginning of the value.
The Functions API provides the most granular control over text search behavior through its string filter methods:
| Method | Behavior |
|---|---|
.exactMatch() | Matches objects where the property value exactly matches the query string |
.phrase() | Splits the query into tokens and matches values containing all tokens in order with no other tokens between them |
.phrasePrefix() | Same as .phrase(), but the last token also matches tokens that start with it |
.prefixOnLastToken() | Splits the query into tokens and matches values containing all tokens in any order, where the last token also matches tokens starting with it |
.matchAnyToken() | Splits the query into tokens and matches values containing any of the tokens |
.matchAllTokens() | Splits the query into tokens and matches values containing all tokens in any order |
.fuzzyMatchAnyToken() | Same as .matchAnyToken() but allows approximate matches within an edit distance |
.fuzzyMatchAllTokens() | Same as .matchAllTokens() but allows approximate matches within an edit distance |
The .phrase() and .phrasePrefix() methods do not match across token boundaries created by underscores or periods. For example, .phrase("banana") does not match the value banana_pudding because banana_pudding is a single token.
The table below summarizes which search capabilities are available in each context:
| Capability | Object Explorer (global) | Object Explorer (property filter) | Workshop Filter List | Functions API |
|---|---|---|---|---|
| Token search | Yes | Yes | Yes | Yes |
| Phrase search | Yes (quotation marks) | No | Yes (Exact mode) | Yes (.phrase()) |
| Prefix search | Yes (term*) | Yes (Starts with) | Yes (All mode) | Yes (.phrasePrefix(), .prefixOnLastToken()) |
| Leading wildcard search | No | Yes (requires render hint) | No | No |
| Wildcard search | Yes (*, ?) | No | Yes (All mode) | No |
| Fuzzy search | Yes (~) | No | No | Yes (.fuzzyMatchAnyToken(), .fuzzyMatchAllTokens()) |
| Boolean operators | Yes (AND, OR, NOT) | No | Yes (Advanced mode) | Yes (Filters.and(), Filters.or(), Filters.not()) |
| Regular expressions | No | No | Yes (Regex mode) | No |
app does not match application unless you use a wildcard (app*) or a prefix search method. This is because the standard analyzer produces the token application, and app is not an exact token match.first_name and user.name as single tokens. If you need to search for first within first_name, use a wildcard or consider changing the property's analyzer.New York in the Object Explorer global search bar returns objects matching new OR york, which may include results you did not expect. Use "New York" for an exact phrase match.Quick*), the query string is not run through the analyzer — it is compared character-for-character against indexed tokens. This has two consequences:
a search term*) is compared against individual tokens and cannot match. Wildcard searches are therefore effectively limited to single-word queries. For partial matching across words, consider Contour or the Regex mode in a Workshop Filter List.*term) is only available on string properties that have the Enable leading wildcards render hint enabled in the Ontology Manager. Without this render hint, leading wildcard queries do not return results.*term* in Object Explorer or Workshop. If you need partial string matching, consider using Contour or the Regex mode in a Workshop Filter List.