
ReaderĪ reusable/refreshable view of an index at a given point in time.

Segments into larger more compact representations.Ī writer supports two-phase transactions via begin()/ commit()/ rollback() methods. Data may be indexed in a per-document basis orĪnother reader for trivial directory merge functionality.Įach commit() of a writer produces a new version/revision of the view of the data in the corresponding directory.Īdditionally the interface also provides directory defragmentation capabilities to allow compacting multiple smaller Unused data versions/revisions may be removed via theĪ single version/revision of the index is composed of one or more segments associated, and possibly shared, with theĪ single instance per-directory object that is used for indexing data. For the case where there are noĭirectory then at least the last data version/revision is stored. If returned value is false then nothing is stored even if something has been written to out stream.Ī data storage abstraction that can either store data in memory or on the filesystem depending on which implementationĪ directory stores at least all the currently in-use index data versions/revisions. If nothing has written but returned value is true then stored value is treated as flag. One may write arbitrary data to stream denoted by out in order to retrieve written value using index_reader API later. The output type must be convertible to bool. Later the stored information can be used during querying and scoring.įor type T to be StoredField, the following conditions have to be satisfied for an object m of type T: Expression it may contain request of storing field norms. The output type must be convertible to const irs::flags&Ī set of user supplied features to be associated with a field. Later the evaluated information can be used during querying and scoring. it may contain request of processing positions and frequencies. The output type must be implicitly convertible to irs::IndexFeaturesĪ set of features requested for evaluation during indexing. If value is nullptr field is treated as non-indexed. The output type must be convertible to irs::token_stream*Ī token stream uses for populating in invert procedure. The output type must be convertible to irs::string_ref IndexedField conceptįor type T to be IndexedField, the following conditions have to be satisfied for an object m of type T: Expression In order to be processed each field should satisfy at least IndexedField or StoredField concept. Index may contain segments created using differentĪ database record is represented as an abstraction called a document.Ī document is actually a collection of indexed/stored fields. Read/write access to the components carried via plugin-based formats. Each index segment is an index itself and consists of Index metadata stores informationĪctive index segments for the particular index version/revision. High level architecture and main concepts IndexĪn index consists of multiple independent parts, called segments and index metadata. Ranking/scoring logic without the need to even recompile the IResearch library. The ranking/scoring implementation logic is plugin-based and lazy-initialized during runtime as needed, allowing for The querying infrastructure provides the capability of ordering the result set by one or more ranking/scoring The queries themselves are constructed query trees built directly using the query building blocks available in the API. The index exposes its data retrieval functionality via 'reader' interface that returns records from an index matching a The index exposes its data processing functionality via a multi-threaded 'writer' interface that treats each documentĬollection of fields to index and/or store. This allows for trivial multi-threaded read/write operations on existing data version/revision is never modified andĪre treated as new versions/revisions of the said data. Indexed data is treated on a per-version/per-revision basis, i.e. The IResearch library is meant to be treated as a standalone index that is capable of both indexing and storing

High level architecture and main concepts.IResearch search engine Version 1.3 Table of contents
