ReadonlyAppliesWhether this provider applies each entity lane's rendered ExtraFilter itself, in the RunView that reads
the entity — so the engine need not re-check its hits against that lane bound. Only EntitySearchProvider
sets it. Every other provider's hits for an entity with a lane ExtraFilter are re-checked by the engine,
as the user, with PK IN (...) AND (<ExtraFilter>).
Like ResultsAreRowsOfLabelledEntity, it is read from the provider the engine stamped on the result
(ProviderId), never from a label, and never covers a promoted content-item hit (the filter was applied to
the content item, not to the origin record it now names). A subclass inherits it; a subclass that changes
Search so the lane ExtraFilter is no longer applied must override it to false.
ProtectedconfigConfig from the SearchProvider metadata record, set during Initialize()
ReadonlyConsumesReads the entity names of the scope's entity lanes (see BaseSearchProvider.ConsumesLaneKinds).
ReadonlyResultsEvery hit is a row of the entity it names: FullTextSearch reads each FTS-enabled entity through
RunViews as the user (see the base class).
ReadonlySourceWhich search source this provider represents
StaticPerRows to fetch PER ENTITY as the ranking candidate pool — decoupled from the global topK
budget (bug C3). Previously topK / 10, which capped every FTS entity to a tiny arbitrary
slice regardless of how many entities matched. The engine still trims the fused set to topK.
Public + static so a deployment can tune it at startup, or override the default at process
start via the MJ_SEARCH_FULLTEXT_PER_ENTITY_FETCH_DEPTH environment variable. Mirrors
EntitySearchProvider.
Get the metadata provider used by this search provider, falling back to the global default.
Set the metadata provider used by this search provider for entity lookups.
Check and cache whether this provider is operational. Called after Initialize(). Override for providers that need to verify external dependencies (e.g., vector indexes exist, API keys are valid).
The default implementation returns true (always available).
The user context for availability checks
Initialize the provider with configuration from the SearchProvider entity. Called once during SearchEngine.Config(). Override to perform provider-specific setup (e.g., connecting to external APIs using credentials).
Configuration from the SearchProvider metadata record
The user context for initialization
Whether this provider is currently available (configured and operational). The SearchEngine will skip providers that return false.
ProtectedScopedThe scope's external-index rows of indexType that name an index, or undefined when the search
is unscoped (ExternalIndexes absent). An EMPTY array means the scope gives this provider no
index: search nothing. A provider falls back to its configured default index only on undefined.
The per-scope constraints passed to Search, if any
The IndexType this provider serves (e.g. 'Elasticsearch')
Execute a full-text search across all FTS-enabled entities.
The search query text
Maximum number of results
Optional filters (EntityNames, Tags)
The user performing the search
OptionalscopeConstraints: ScopeConstraintsScored result items from full-text search
Set the enricher instance. Called by SearchEngine after construction.
StaticGetEnumerate every search provider currently registered with ClassFactory under
BaseSearchProvider. Designed for the SearchScope form's provider dropdown
(P5.5) — populates the dropdown from this single call rather than hardcoding
a list, so any ClassFactory-registered provider (including third-party ones)
shows up automatically.
Each entry includes the driver-class registration key (writes into
SearchProvider.DriverClass) and the SourceType the provider implements.
Sorted by DriverClass for stable UI ordering.
Provides full-text search using the MJ Metadata.FullTextSearch() method. Always available since it relies on the standard MJ provider infrastructure.