0
0
Fork 0

added upside_down TermFrequencyRow.KeyAppendTo() API

This is a cleanup commit that's followup to a code review discussion
on a previous Advance() perf-optimization PR...

https://github.com/blevesearch/bleve/pull/443
This commit is contained in:
Steve Yen 2016-09-23 09:01:30 -07:00
parent 1d81d34a5a
commit 10cab1826d
2 changed files with 15 additions and 7 deletions

View File

@ -103,18 +103,17 @@ func (r *UpsideDownCouchTermFieldReader) Next(preAlloced *index.TermFieldDoc) (*
return nil, nil
}
func (r *UpsideDownCouchTermFieldReader) Advance(docID index.IndexInternalID, preAlloced *index.TermFieldDoc) (*index.TermFieldDoc, error) {
func (r *UpsideDownCouchTermFieldReader) Advance(docID index.IndexInternalID, preAlloced *index.TermFieldDoc) (rv *index.TermFieldDoc, err error) {
if r.iterator != nil {
if r.tfrNext == nil {
r.tfrNext = &TermFrequencyRow{}
}
tfr := InitTermFrequencyRow(r.tfrNext, r.term, r.field, docID, 0, 0)
keySize := tfr.KeySize()
if cap(r.keyBuf) < keySize {
r.keyBuf = make([]byte, keySize)
r.keyBuf, err = tfr.KeyAppendTo(r.keyBuf[:0])
if err != nil {
return nil, err
}
keySize, _ = tfr.KeyTo(r.keyBuf[0:keySize])
r.iterator.Seek(r.keyBuf[0:keySize])
r.iterator.Seek(r.keyBuf)
key, val, valid := r.iterator.Current()
if valid {
err := tfr.parseKDoc(key, r.term)
@ -125,7 +124,7 @@ func (r *UpsideDownCouchTermFieldReader) Advance(docID index.IndexInternalID, pr
if err != nil {
return nil, err
}
rv := preAlloced
rv = preAlloced
if rv == nil {
rv = &index.TermFieldDoc{}
}

View File

@ -408,6 +408,15 @@ func (tfr *TermFrequencyRow) KeyTo(buf []byte) (int, error) {
return 3 + termLen + 1 + docLen, nil
}
func (tfr *TermFrequencyRow) KeyAppendTo(buf []byte) ([]byte, error) {
keySize := tfr.KeySize()
if cap(buf) < keySize {
buf = make([]byte, keySize)
}
actualSize, err := tfr.KeyTo(buf[0:keySize])
return buf[0:actualSize], err
}
func (tfr *TermFrequencyRow) DictionaryRowKey() []byte {
dr := NewDictionaryRow(tfr.term, tfr.field, 0)
return dr.Key()