mirror of
https://github.com/go-gitea/gitea
synced 2024-09-19 02:06:04 +00:00
fdf750e4d4
* Update blevesearch v0.8.1 -> v1.0.7 * make vendor Co-authored-by: zeripath <art27@cantab.net>
154 lines
4.0 KiB
Go
Vendored
154 lines
4.0 KiB
Go
Vendored
// Copyright (c) 2017 Couchbase, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package segment
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/RoaringBitmap/roaring"
|
|
"github.com/blevesearch/bleve/index"
|
|
"github.com/couchbase/vellum"
|
|
)
|
|
|
|
var ErrClosed = fmt.Errorf("index closed")
|
|
|
|
// DocumentFieldValueVisitor defines a callback to be visited for each
|
|
// stored field value. The return value determines if the visitor
|
|
// should keep going. Returning true continues visiting, false stops.
|
|
type DocumentFieldValueVisitor func(field string, typ byte, value []byte, pos []uint64) bool
|
|
|
|
type Segment interface {
|
|
Dictionary(field string) (TermDictionary, error)
|
|
|
|
VisitDocument(num uint64, visitor DocumentFieldValueVisitor) error
|
|
|
|
DocID(num uint64) ([]byte, error)
|
|
|
|
Count() uint64
|
|
|
|
DocNumbers([]string) (*roaring.Bitmap, error)
|
|
|
|
Fields() []string
|
|
|
|
Close() error
|
|
|
|
Size() int
|
|
|
|
AddRef()
|
|
DecRef() error
|
|
}
|
|
|
|
type UnpersistedSegment interface {
|
|
Segment
|
|
Persist(path string) error
|
|
}
|
|
|
|
type PersistedSegment interface {
|
|
Segment
|
|
Path() string
|
|
}
|
|
|
|
type TermDictionary interface {
|
|
PostingsList(term []byte, except *roaring.Bitmap, prealloc PostingsList) (PostingsList, error)
|
|
|
|
Iterator() DictionaryIterator
|
|
PrefixIterator(prefix string) DictionaryIterator
|
|
RangeIterator(start, end string) DictionaryIterator
|
|
AutomatonIterator(a vellum.Automaton,
|
|
startKeyInclusive, endKeyExclusive []byte) DictionaryIterator
|
|
OnlyIterator(onlyTerms [][]byte, includeCount bool) DictionaryIterator
|
|
|
|
Contains(key []byte) (bool, error)
|
|
}
|
|
|
|
type DictionaryIterator interface {
|
|
Next() (*index.DictEntry, error)
|
|
}
|
|
|
|
type PostingsList interface {
|
|
Iterator(includeFreq, includeNorm, includeLocations bool, prealloc PostingsIterator) PostingsIterator
|
|
|
|
Size() int
|
|
|
|
Count() uint64
|
|
|
|
// NOTE deferred for future work
|
|
|
|
// And(other PostingsList) PostingsList
|
|
// Or(other PostingsList) PostingsList
|
|
}
|
|
|
|
type PostingsIterator interface {
|
|
// The caller is responsible for copying whatever it needs from
|
|
// the returned Posting instance before calling Next(), as some
|
|
// implementations may return a shared instance to reduce memory
|
|
// allocations.
|
|
Next() (Posting, error)
|
|
|
|
// Advance will return the posting with the specified doc number
|
|
// or if there is no such posting, the next posting.
|
|
// Callers MUST NOT attempt to pass a docNum that is less than or
|
|
// equal to the currently visited posting doc Num.
|
|
Advance(docNum uint64) (Posting, error)
|
|
|
|
Size() int
|
|
}
|
|
|
|
type OptimizablePostingsIterator interface {
|
|
ActualBitmap() *roaring.Bitmap
|
|
DocNum1Hit() (uint64, bool)
|
|
ReplaceActual(*roaring.Bitmap)
|
|
}
|
|
|
|
type Posting interface {
|
|
Number() uint64
|
|
|
|
Frequency() uint64
|
|
Norm() float64
|
|
|
|
Locations() []Location
|
|
|
|
Size() int
|
|
}
|
|
|
|
type Location interface {
|
|
Field() string
|
|
Start() uint64
|
|
End() uint64
|
|
Pos() uint64
|
|
ArrayPositions() []uint64
|
|
Size() int
|
|
}
|
|
|
|
// DocumentFieldTermVisitable is implemented by various scorch segment
|
|
// implementations with persistence for the un inverting of the
|
|
// postings or other indexed values.
|
|
type DocumentFieldTermVisitable interface {
|
|
VisitDocumentFieldTerms(localDocNum uint64, fields []string,
|
|
visitor index.DocumentFieldTermVisitor, optional DocVisitState) (DocVisitState, error)
|
|
|
|
// VisitableDocValueFields implementation should return
|
|
// the list of fields which are document value persisted and
|
|
// therefore visitable by the above VisitDocumentFieldTerms method.
|
|
VisitableDocValueFields() ([]string, error)
|
|
}
|
|
|
|
type DocVisitState interface {
|
|
}
|
|
|
|
type StatsReporter interface {
|
|
ReportBytesWritten(bytesWritten uint64)
|
|
}
|