Merge pull request #659 from steveyen/scorch
scorch removed worker goroutines from TermFieldReader()
This commit is contained in:
commit
0c0f05e398
|
@ -341,27 +341,6 @@ func (i *IndexSnapshot) InternalID(id string) (rv index.IndexInternalID, err err
|
||||||
func (i *IndexSnapshot) TermFieldReader(term []byte, field string, includeFreq,
|
func (i *IndexSnapshot) TermFieldReader(term []byte, field string, includeFreq,
|
||||||
includeNorm, includeTermVectors bool) (index.TermFieldReader, error) {
|
includeNorm, includeTermVectors bool) (index.TermFieldReader, error) {
|
||||||
|
|
||||||
results := make(chan *asynchSegmentResult)
|
|
||||||
for index, segment := range i.segment {
|
|
||||||
go func(index int, segment *SegmentSnapshot) {
|
|
||||||
dict, err := segment.Dictionary(field)
|
|
||||||
if err != nil {
|
|
||||||
results <- &asynchSegmentResult{err: err}
|
|
||||||
} else {
|
|
||||||
pl, err := dict.PostingsList(string(term), nil)
|
|
||||||
if err != nil {
|
|
||||||
results <- &asynchSegmentResult{err: err}
|
|
||||||
} else {
|
|
||||||
results <- &asynchSegmentResult{
|
|
||||||
index: index,
|
|
||||||
postings: pl,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}(index, segment)
|
|
||||||
}
|
|
||||||
|
|
||||||
var err error
|
|
||||||
rv := &IndexSnapshotTermFieldReader{
|
rv := &IndexSnapshotTermFieldReader{
|
||||||
term: term,
|
term: term,
|
||||||
snapshot: i,
|
snapshot: i,
|
||||||
|
@ -371,26 +350,27 @@ func (i *IndexSnapshot) TermFieldReader(term []byte, field string, includeFreq,
|
||||||
includeNorm: includeNorm,
|
includeNorm: includeNorm,
|
||||||
includeTermVectors: includeTermVectors,
|
includeTermVectors: includeTermVectors,
|
||||||
}
|
}
|
||||||
for count := 0; count < len(i.segment); count++ {
|
for i, segment := range i.segment {
|
||||||
asr := <-results
|
dict, err := segment.Dictionary(field)
|
||||||
if asr.err != nil && err == nil {
|
if err != nil {
|
||||||
err = asr.err
|
return nil, err
|
||||||
} else {
|
|
||||||
rv.postings[asr.index] = asr.postings
|
|
||||||
rv.iterators[asr.index] = asr.postings.Iterator()
|
|
||||||
}
|
}
|
||||||
}
|
pl, err := dict.PostingsList(string(term), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
}
|
||||||
|
rv.postings[i] = pl
|
||||||
|
rv.iterators[i] = pl.Iterator()
|
||||||
}
|
}
|
||||||
return rv, nil
|
return rv, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func docNumberToBytes(in uint64) []byte {
|
func docNumberToBytes(buf []byte, in uint64) []byte {
|
||||||
|
if len(buf) != 8 {
|
||||||
buf := new(bytes.Buffer)
|
buf = make([]byte, 8)
|
||||||
_ = binary.Write(buf, binary.BigEndian, in)
|
}
|
||||||
return buf.Bytes()
|
binary.BigEndian.PutUint64(buf, in)
|
||||||
|
return buf
|
||||||
}
|
}
|
||||||
|
|
||||||
func docInternalToNumber(in index.IndexInternalID) (uint64, error) {
|
func docInternalToNumber(in index.IndexInternalID) (uint64, error) {
|
||||||
|
|
|
@ -36,7 +36,7 @@ func (i *IndexSnapshotDocIDReader) Next() (index.IndexInternalID, error) {
|
||||||
next := i.iterators[i.segmentOffset].Next()
|
next := i.iterators[i.segmentOffset].Next()
|
||||||
// make segment number into global number by adding offset
|
// make segment number into global number by adding offset
|
||||||
globalOffset := i.snapshot.offsets[i.segmentOffset]
|
globalOffset := i.snapshot.offsets[i.segmentOffset]
|
||||||
return docNumberToBytes(uint64(next) + globalOffset), nil
|
return docNumberToBytes(nil, uint64(next)+globalOffset), nil
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,7 @@ func (i *IndexSnapshotTermFieldReader) Next(preAlloced *index.TermFieldDoc) (*in
|
||||||
// make segment number into global number by adding offset
|
// make segment number into global number by adding offset
|
||||||
globalOffset := i.snapshot.offsets[i.segmentOffset]
|
globalOffset := i.snapshot.offsets[i.segmentOffset]
|
||||||
nnum := next.Number()
|
nnum := next.Number()
|
||||||
rv.ID = docNumberToBytes(nnum + globalOffset)
|
rv.ID = docNumberToBytes(rv.ID, nnum+globalOffset)
|
||||||
|
|
||||||
i.postingToTermFieldDoc(next, rv)
|
i.postingToTermFieldDoc(next, rv)
|
||||||
|
|
||||||
i.currID = rv.ID
|
i.currID = rv.ID
|
||||||
|
|
Loading…
Reference in New Issue
Block a user