engine

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TangSengEngineOnce sync.Once

Functions

This section is empty.

Types

type Engine

type Engine struct {
	Scheduler       *MergeScheduler                    // 合并调度器
	BufCount        int64                              // 倒排索引 缓冲区的文档数
	BufSize         int64                              // 设定的缓冲区大小
	PostingsHashBuf segment.InvertedIndexHash          // 倒排索引缓冲区
	TrieTree        *trie.Trie                         // 词典前缀树
	CurrSegId       segment.SegId                      // 当前engine关联的segId查询
	Seg             map[segment.SegId]*segment.Segment // 当前engine关联的segment
	// contains filtered or unexported fields
}

Engine 写入引擎

var TangSengEngineIns *Engine

func NewTangSengEngine added in v0.1.0

func NewTangSengEngine(meta *Meta, engineMode segment.Mode) *Engine

NewTangSengEngine 每次初始化的时候调整meta数据

func (*Engine) AddForwardIndex

func (e *Engine) AddForwardIndex(doc *types.Document) error

AddForwardIndex 落库正排索引

func (*Engine) Close

func (e *Engine) Close()

Close --

func (*Engine) FlushDict added in v0.1.0

func (e *Engine) FlushDict(isEnd ...bool) (err error)

FlushDict 刷新dict

func (*Engine) FlushInvertedIndex added in v0.1.0

func (e *Engine) FlushInvertedIndex(isEnd ...bool) (err error)

FlushInvertedIndex 倒排索引落盘操作

func (*Engine) GetDict added in v0.1.0

func (e *Engine) GetDict(query string) (res []*types.DictTireTree, err error)

GetDict 获取dict

func (*Engine) Text2PostingsLists

func (e *Engine) Text2PostingsLists(text string, docId int64) (err error)

Text2PostingsLists 文本 转成 倒排索引记录表

func (*Engine) UpdateCount

func (e *Engine) UpdateCount(num int64) (err error)

type MergeMessage

type MergeMessage []*segment.SegInfo

MergeMessage 合并队列

type MergeScheduler

type MergeScheduler struct {
	Message chan *MergeMessage
	Meta    *Meta

	sync.WaitGroup
}

MergeScheduler 合并调度器

func NewScheduler

func NewScheduler(meta *Meta) *MergeScheduler

NewScheduler 创建调度器

func (*MergeScheduler) Close

func (m *MergeScheduler) Close()

Close 关闭调度器

func (*MergeScheduler) MayMerge

func (m *MergeScheduler) MayMerge()

MayMerge 判断是否需要merge 通过 meta 数据中的seg info 来计算

func (*MergeScheduler) Merge

func (m *MergeScheduler) Merge()

Merge 合并入口

type Meta

type Meta struct {
	sync.RWMutex
	Version    string           `json:"version"` // 版本号
	IndexCount int64            `json:"index"`
	SegMeta    *segment.SegMeta `json:"seg_meta"`
	Path       string           `json:"path"` // 元数据文件存储路径
}

Meta 元数据

func ParseMeta

func ParseMeta() (*Meta, error)

func (*Meta) SyncByTicker

func (m *Meta) SyncByTicker(ticker *time.Ticker)

SyncByTicker 定时同步元数据

func (*Meta) SyncMeta

func (m *Meta) SyncMeta() (err error)

SyncMeta 同步元数据到文件

func (*Meta) UpdateSegMeta

func (m *Meta) UpdateSegMeta(segId segment.SegId, indexCount int64) (err error)

UpdateSegMeta 更新 SegMeta 并同步

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL