package types

// 这些常数定义了反向索引表存储的数据类型
const (
    // 仅存储文档的docId
    DocIdsIndex = 0

    // 存储关键词的词频,用于计算BM25
    FrequenciesIndex = 1

    // 存储关键词在文档中出现的具体字节位置(可能有多个)
    // 如果你希望得到关键词紧邻度数据,必须使用LocationsIndex类型的索引
    LocationsIndex = 2

    // 默认插入索引表文档 CACHE SIZE
    defaultDocCacheSize = 300000
)

// 初始化索引器选项
type IndexerInitOptions struct {
    // 索引表的类型,见上面的常数
    IndexType int

    // 待插入索引表文档 CACHE SIZE
    DocCacheSize int

    // BM25参数
    BM25Parameters *BM25Parameters
}

// 见http://en.wikipedia.org/wiki/Okapi_BM25
// 默认值见engine_init_options.go
type BM25Parameters struct {
    K1 float32
    B  float32
}

func (options *IndexerInitOptions) Init() {
    if options.DocCacheSize == 0 {
        options.DocCacheSize = defaultDocCacheSize
    }
}