0
0
Fork 0

scorch zap Dict.postingsList() takes []byte for more mem control

This allows callers that already have a []byte term to avoid
string'ification garbage.
This commit is contained in:
Steve Yen 2018-01-27 09:42:56 -08:00
parent 6a17ff48c7
commit 10dd5489c2
4 changed files with 6 additions and 7 deletions

View File

@ -35,10 +35,10 @@ type Dictionary struct {
// PostingsList returns the postings list for the specified term
func (d *Dictionary) PostingsList(term string, except *roaring.Bitmap) (segment.PostingsList, error) {
return d.postingsList(term, except)
return d.postingsList([]byte(term), except)
}
func (d *Dictionary) postingsList(term string, except *roaring.Bitmap) (*PostingsList, error) {
func (d *Dictionary) postingsList(term []byte, except *roaring.Bitmap) (*PostingsList, error) {
rv := &PostingsList{
sb: d.sb,
term: term,
@ -46,7 +46,7 @@ func (d *Dictionary) postingsList(term string, except *roaring.Bitmap) (*Posting
}
if d.fst != nil {
postingsOffset, exists, err := d.fst.Get([]byte(term))
postingsOffset, exists, err := d.fst.Get(term)
if err != nil {
return nil, fmt.Errorf("vellum err: %v", err)
}
@ -96,7 +96,6 @@ func (d *Dictionary) postingsList(term string, except *roaring.Bitmap) (*Posting
// Iterator returns an iterator for this dictionary
func (d *Dictionary) Iterator() segment.DictionaryIterator {
rv := &DictionaryIterator{
d: d,
}

View File

@ -206,7 +206,7 @@ func persistMergedRest(segments []*Segment, drops []*roaring.Bitmap,
if dict == nil {
continue
}
postings, err2 := dict.postingsList(string(term), drops[dictI])
postings, err2 := dict.postingsList(term, drops[dictI])
if err2 != nil {
return nil, 0, err2
}

View File

@ -28,7 +28,7 @@ import (
// PostingsList is an in-memory represenation of a postings list
type PostingsList struct {
sb *SegmentBase
term string
term []byte
postingsOffset uint64
freqOffset uint64
locOffset uint64

View File

@ -344,7 +344,7 @@ func (s *SegmentBase) DocNumbers(ids []string) (*roaring.Bitmap, error) {
}
for _, id := range ids {
postings, err := idDict.postingsList(id, nil)
postings, err := idDict.postingsList([]byte(id), nil)
if err != nil {
return nil, err
}