Documentation
¶
Index ¶
- type Active
- func (f *Active) Append(docs storage.DocBlock, metas storage.WalBlock, wg *sync.WaitGroup) (err error)
- func (f *Active) AppendIDs(ids []seq.ID) []uint32
- func (f *Active) Contains(id seq.MID) bool
- func (f *Active) Fetch(ctx context.Context, ids []seq.ID, noSkipMasks bool) ([][]byte, error)
- func (f *Active) FindLIDs(ctx context.Context, ids []seq.ID) ([]seq.LID, error)
- func (f *Active) GetAllDocuments() []uint32
- func (f *Active) Info() *common.Info
- func (f *Active) IsIntersecting(from, to seq.MID) bool
- func (f *Active) Release()
- func (f *Active) Replay(ctx context.Context) error
- func (f *Active) Search(ctx context.Context, params processor.SearchParams) (*seq.QPR, error)
- func (f *Active) String() string
- func (f *Active) Suicide()
- func (f *Active) UpdateStats(minMID, maxMID seq.MID, docCount uint32, sizeCount uint64)
- type ActiveIndexer
- type ActiveLIDs
- type ActiveSealingSource
- func (src *ActiveSealingSource) BlockOffsets() []uint64
- func (src *ActiveSealingSource) Docs() iter.Seq2[Document, error]
- func (src *ActiveSealingSource) ID() iter.Seq2[DocLocation, error]
- func (src *ActiveSealingSource) Info() *common.Info
- func (src *ActiveSealingSource) SortDocs() error
- func (src *ActiveSealingSource) TokenTriplet() iter.Seq2[string, iter.Seq2[TokenPosting, error]]
- type ActiveWriter
- type AggLimits
- type BulkStats
- type BulkStatsCollector
- type Config
- type DocLocation
- type DocsPositions
- type Document
- type Fraction
- type IndexCache
- type IndexReaders
- type IndexedDocBlock
- type LegacyLoader
- type LegacyMetaWriter
- type Loader
- type MetaWriter
- type PSD
- type Remote
- func (f *Remote) Contains(mid seq.MID) bool
- func (f *Remote) Fetch(ctx context.Context, ids []seq.ID, noSkipMasks bool) ([][]byte, error)
- func (f *Remote) FindLIDs(ctx context.Context, ids []seq.ID) ([]seq.LID, error)
- func (f *Remote) Info() *common.Info
- func (f *Remote) IsIntersecting(from, to seq.MID) bool
- func (f *Remote) Search(ctx context.Context, params processor.SearchParams) (*seq.QPR, error)
- func (f *Remote) String() string
- func (f *Remote) Suicide()
- type Sealed
- func (f *Sealed) Contains(id seq.MID) bool
- func (f *Sealed) Fetch(ctx context.Context, ids []seq.ID, noSkipMasks bool) ([][]byte, error)
- func (f *Sealed) FindLIDs(ctx context.Context, ids []seq.ID) ([]seq.LID, error)
- func (f *Sealed) Info() *common.Info
- func (f *Sealed) IsIntersecting(from, to seq.MID) bool
- func (f *Sealed) Offload(ctx context.Context, u storage.Uploader) (bool, error)
- func (f *Sealed) Release()
- func (f *Sealed) Search(ctx context.Context, params processor.SearchParams) (*seq.QPR, error)
- func (f *Sealed) String() string
- func (f *Sealed) Suicide()
- type SearchConfig
- type SeqIDCmp
- type TokenLIDs
- type TokenList
- func (tl *TokenList) Append(tokens [][]byte, fieldsLengths []int, tokenLIDsPlaces []*TokenLIDs) []*TokenLIDs
- func (tl *TokenList) FindPattern(ctx context.Context, t parser.Token) ([]uint32, error)
- func (tl *TokenList) GetAllTokenLIDs() *TokenLIDs
- func (tl *TokenList) GetFieldSizes() map[string]uint32
- func (tl *TokenList) GetTIDsByField(f string) []uint32
- func (tl *TokenList) GetValByTID(tid uint32) []byte
- func (tl *TokenList) Provide(tid uint32) *TokenLIDs
- func (tl *TokenList) Stop()
- type TokenPosting
- type UInt64s
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Active ¶
type Active struct {
Config *Config
BaseFileName string
MIDs *UInt64s
RIDs *UInt64s
DocBlocks *UInt64s
TokenList *TokenList
DocsPositions *DocsPositions
IDsToLIDs *ActiveLIDs
// contains filtered or unexported fields
}
func (*Active) Append ¶
func (f *Active) Append(docs storage.DocBlock, metas storage.WalBlock, wg *sync.WaitGroup) (err error)
Append causes data to be written on disk and sends metas to index workers
func (*Active) GetAllDocuments ¶
type ActiveIndexer ¶
type ActiveIndexer struct {
// contains filtered or unexported fields
}
func NewActiveIndexer ¶
func NewActiveIndexer(workerCount, chLen int) (*ActiveIndexer, func())
type ActiveLIDs ¶ added in v0.70.0
type ActiveLIDs struct {
// contains filtered or unexported fields
}
func NewActiveLIDs ¶ added in v0.70.0
func NewActiveLIDs() *ActiveLIDs
func (*ActiveLIDs) SetMultiple ¶ added in v0.70.0
func (al *ActiveLIDs) SetMultiple(ids []seq.ID, lids []uint32)
type ActiveSealingSource ¶ added in v0.62.0
type ActiveSealingSource struct {
// contains filtered or unexported fields
}
func NewActiveSealingSource ¶ added in v0.62.0
func NewActiveSealingSource(active *Active, params common.SealParams) (*ActiveSealingSource, error)
func (*ActiveSealingSource) BlockOffsets ¶ added in v0.71.0
func (src *ActiveSealingSource) BlockOffsets() []uint64
func (*ActiveSealingSource) Docs ¶ added in v0.62.0
func (src *ActiveSealingSource) Docs() iter.Seq2[Document, error]
Docs returns an iterator for documents with their IDs. Handles duplicate IDs (for nested indexes).
func (*ActiveSealingSource) ID ¶ added in v0.71.0
func (src *ActiveSealingSource) ID() iter.Seq2[DocLocation, error]
func (*ActiveSealingSource) Info ¶ added in v0.62.0
func (src *ActiveSealingSource) Info() *common.Info
func (*ActiveSealingSource) SortDocs ¶ added in v0.62.0
func (src *ActiveSealingSource) SortDocs() error
SortDocs sorts documents and writes them in compressed form to disk. Creates a temporary file that is then renamed to the final one.
func (*ActiveSealingSource) TokenTriplet ¶ added in v0.71.0
func (src *ActiveSealingSource) TokenTriplet() iter.Seq2[string, iter.Seq2[TokenPosting, error]]
type ActiveWriter ¶
type ActiveWriter struct {
// contains filtered or unexported fields
}
func NewActiveWriter ¶
func NewActiveWriter(docsFile, walFile *os.File, docsOffset, walOffset int64, skipFsync bool) *ActiveWriter
NewActiveWriter creates a writer for *.wal files
func NewActiveWriterLegacy ¶ added in v0.69.0
func NewActiveWriterLegacy(docsFile, metaFile *os.File, docsOffset, metaOffset int64, skipFsync bool) *ActiveWriter
NewActiveWriterLegacy creates a writer for *.meta files
func (*ActiveWriter) Stop ¶
func (a *ActiveWriter) Stop()
type AggLimits ¶
type AggLimits struct {
MaxFieldTokens int // MaxFieldTokens max AggQuery.Field uniq values to parse.
MaxFieldValues int // MaxFieldValues max AggQuery.Field uniq values to hold per aggregation request.
MaxGroupTokens int // MaxGroupTokens max AggQuery.GroupBy unique values.
MaxTIDsPerFraction int // MaxTIDsPerFraction max number of tokens per fraction.
}
type BulkStats ¶ added in v0.65.0
type BulkStats struct {
// contains filtered or unexported fields
}
BulkStats holds statistics for bulk operations
type BulkStatsCollector ¶ added in v0.65.0
type BulkStatsCollector struct {
// contains filtered or unexported fields
}
BulkStatsCollector collects and periodically logs bulk operation statistics
func NewBulkStatsCollector ¶ added in v0.65.0
func NewBulkStatsCollector(period time.Duration, queueSize int) *BulkStatsCollector
NewBulkStatsCollector creates a new stats collector with specified parameters
func (*BulkStatsCollector) Add ¶ added in v0.65.0
func (c *BulkStatsCollector) Add(bs BulkStats)
func (*BulkStatsCollector) Stop ¶ added in v0.65.0
func (c *BulkStatsCollector) Stop()
type Config ¶
type Config struct {
Search SearchConfig
SkipSortDocs bool
KeepMetaFile bool
}
type DocsPositions ¶
type DocsPositions struct {
// contains filtered or unexported fields
}
func NewSyncDocsPositions ¶
func NewSyncDocsPositions() *DocsPositions
func (*DocsPositions) SetMultiple ¶
SetMultiple returns a slice of added ids
type IndexCache ¶
type IndexCache struct {
// Registry cache for legacy sealed fractions.
LegacyRegistry *cache.Cache[[]byte]
// Per-file registry caches (each IndexReader needs its own).
TokenRegistry *cache.Cache[[]byte]
OffsetsRegistry *cache.Cache[[]byte]
IDRegistry *cache.Cache[[]byte]
LIDRegistry *cache.Cache[[]byte]
// Block-level data caches shared across all readers.
MIDs *cache.Cache[[]byte]
RIDs *cache.Cache[seqids.BlockRIDs]
Params *cache.Cache[seqids.BlockParams]
Tokens *cache.Cache[*token.Block]
TokenTable *cache.Cache[token.Table]
LIDs *cache.Cache[*lids.Block]
}
func (*IndexCache) Release ¶
func (s *IndexCache) Release()
type IndexReaders ¶ added in v0.71.0
type IndexReaders struct {
Token storage.IndexReader
Offsets storage.IndexReader
ID storage.IndexReader
LID storage.IndexReader
}
IndexReaders holds one IndexReader per split index file.
type LegacyLoader ¶ added in v0.71.0
type LegacyLoader struct {
// contains filtered or unexported fields
}
LegacyLoader reads the old single .index file format by scanning blocks sequentially. Block indices stored in lids.Table and seqids.Table are absolute within the .index file, so the same IndexReader can be passed to all sub-loaders unchanged.
func (*LegacyLoader) Load ¶ added in v0.71.0
func (l *LegacyLoader) Load(blocksData *sealed.BlocksData, info *common.Info, reader storage.IndexReader)
Load populates blocksData from a single legacy .index file. It starts at block 1 (block 0 is the Info block, already read by loadHeader).
type LegacyMetaWriter ¶ added in v0.69.0
type LegacyMetaWriter struct {
// contains filtered or unexported fields
}
LegacyMetaWriter is MetaWriter for the legacy *.meta files. Converts new storage.WalBlock block type to storage.DocBlock
func NewLegacyMetaWriter ¶ added in v0.69.0
func NewLegacyMetaWriter(fw *storage.FileWriter) *LegacyMetaWriter
func (*LegacyMetaWriter) Stop ¶ added in v0.69.0
func (l *LegacyMetaWriter) Stop()
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
Loader reads the per-section index files to populate BlocksData. Token data is loaded lazily (BlockLoader / TableLoader use the Token reader directly). Info is loaded separately via loadHeader before Load is called.
func (*Loader) Load ¶
func (l *Loader) Load(blocksData *sealed.BlocksData, info *common.Info, readers IndexReaders)
Load populates blocksData from the .offsets, .id, and .lid files.
type MetaWriter ¶ added in v0.69.0
type PSD ¶
type PSD int // emulates hard shutdown on different stages of fraction deletion, used for tests
type Remote ¶ added in v0.60.0
type Remote struct {
Config *Config
BaseFileName string
// IsLegacy is true for fractions that use the old single .index file format.
IsLegacy bool
// contains filtered or unexported fields
}
Remote fraction is a fraction that is backed by remote storage.
Structure of Remote fraction is almost identical to the Sealed one. In fact, they share the same on-disk binary layout, access methods and any other logic, but having Remote fraction allows us to easily distinguish between local and remote fractions.
func (*Remote) IsIntersecting ¶ added in v0.60.0
type Sealed ¶
type Sealed struct {
Config *Config
BaseFileName string
// IsLegacy is true for fractions that use the old single .index file format.
IsLegacy bool
// shit for testing
PartialSuicideMode PSD
// contains filtered or unexported fields
}
func NewSealedPreloaded ¶
func NewSealedPreloaded( baseFile string, preloaded *sealed.PreloadedData, rl *storage.ReadLimiter, indexCache *IndexCache, docsCache *cache.Cache[[]byte], config *Config, skipMaskProvider skipMaskProvider, ) *Sealed
type SearchConfig ¶
type SearchConfig struct {
AggLimits AggLimits
}
type TokenLIDs ¶
type TokenLIDs struct {
// contains filtered or unexported fields
}
func (*TokenLIDs) PutLIDsInQueue ¶
func (*TokenLIDs) SortedLIDsUnsafe ¶ added in v0.71.0
SortedLIDs returns pre-merged LIDs. Only safe to call after the fraction is frozen and lids queue was drained.
type TokenList ¶
func NewActiveTokenList ¶
func (*TokenList) FindPattern ¶
func (*TokenList) GetAllTokenLIDs ¶
func (*TokenList) GetFieldSizes ¶
func (*TokenList) GetTIDsByField ¶
func (*TokenList) GetValByTID ¶
Source Files
¶
- active.go
- active_docs_positions.go
- active_ids.go
- active_index.go
- active_indexer.go
- active_lids.go
- active_lids_map.go
- active_sealing_source.go
- active_token_list.go
- active_writer.go
- bulk_stats.go
- config.go
- fraction.go
- index_cache.go
- inverser.go
- legacy_meta_writer.go
- meta_data_collector.go
- remote.go
- sealed.go
- sealed_index.go
- sealed_loader.go