scorch zap dict.postingsListFromOffset() method
A helper method that can create a PostingsList if the caller already knows the postingsOffset.
This commit is contained in:
parent
2158e06c40
commit
a073424e5a
|
@ -38,6 +38,33 @@ func (d *Dictionary) PostingsList(term string, except *roaring.Bitmap) (segment.
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Dictionary) postingsList(term []byte, except *roaring.Bitmap, rv *PostingsList) (*PostingsList, error) {
|
func (d *Dictionary) postingsList(term []byte, except *roaring.Bitmap, rv *PostingsList) (*PostingsList, error) {
|
||||||
|
if d.fst == nil {
|
||||||
|
return d.postingsListInit(rv, except), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
postingsOffset, exists, err := d.fst.Get(term)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("vellum err: %v", err)
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return d.postingsListInit(rv, except), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return d.postingsListFromOffset(postingsOffset, except, rv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *Dictionary) postingsListFromOffset(postingsOffset uint64, except *roaring.Bitmap, rv *PostingsList) (*PostingsList, error) {
|
||||||
|
rv = d.postingsListInit(rv, except)
|
||||||
|
|
||||||
|
err := rv.read(postingsOffset, d)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *Dictionary) postingsListInit(rv *PostingsList, except *roaring.Bitmap) *PostingsList {
|
||||||
if rv == nil {
|
if rv == nil {
|
||||||
rv = &PostingsList{}
|
rv = &PostingsList{}
|
||||||
} else {
|
} else {
|
||||||
|
@ -45,21 +72,7 @@ func (d *Dictionary) postingsList(term []byte, except *roaring.Bitmap, rv *Posti
|
||||||
}
|
}
|
||||||
rv.sb = d.sb
|
rv.sb = d.sb
|
||||||
rv.except = except
|
rv.except = except
|
||||||
|
return rv
|
||||||
if d.fst != nil {
|
|
||||||
postingsOffset, exists, err := d.fst.Get(term)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("vellum err: %v", err)
|
|
||||||
}
|
|
||||||
if exists {
|
|
||||||
err = rv.read(postingsOffset, d)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterator returns an iterator for this dictionary
|
// Iterator returns an iterator for this dictionary
|
||||||
|
|
Loading…
Reference in New Issue