* [MM-20979] Add first implementation of the Bleve search engine * Fix i18n * Migrate searchengine utils tests * Fix linter * Don't add allTermsQ if both termQueries and notTermQueries are empty * Fix test that should work if user is system admin * Modify naming according to review comments * Abstract getIndexDir function * Extracting bleve engine name as a constant * Merge both Indexer interfaces into one * Add worker stopped message * Allow worker to be started/stopped with config change * Use constants for index names * Modify test order * Fix linter * Trying to unlock the CI
53 строки
865 B
Go
53 строки
865 B
Go
package roaring
|
|
|
|
type shortIterable interface {
|
|
hasNext() bool
|
|
next() uint16
|
|
}
|
|
|
|
type shortPeekable interface {
|
|
shortIterable
|
|
peekNext() uint16
|
|
advanceIfNeeded(minval uint16)
|
|
}
|
|
|
|
type shortIterator struct {
|
|
slice []uint16
|
|
loc int
|
|
}
|
|
|
|
func (si *shortIterator) hasNext() bool {
|
|
return si.loc < len(si.slice)
|
|
}
|
|
|
|
func (si *shortIterator) next() uint16 {
|
|
a := si.slice[si.loc]
|
|
si.loc++
|
|
return a
|
|
}
|
|
|
|
func (si *shortIterator) peekNext() uint16 {
|
|
return si.slice[si.loc]
|
|
}
|
|
|
|
func (si *shortIterator) advanceIfNeeded(minval uint16) {
|
|
if si.hasNext() && si.peekNext() < minval {
|
|
si.loc = advanceUntil(si.slice, si.loc, len(si.slice), minval)
|
|
}
|
|
}
|
|
|
|
type reverseIterator struct {
|
|
slice []uint16
|
|
loc int
|
|
}
|
|
|
|
func (si *reverseIterator) hasNext() bool {
|
|
return si.loc >= 0
|
|
}
|
|
|
|
func (si *reverseIterator) next() uint16 {
|
|
a := si.slice[si.loc]
|
|
si.loc--
|
|
return a
|
|
}
|