From 8c0f402d4b06a9c345f5049bd0f72b474db8ffbb Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Tue, 6 Mar 2018 15:48:22 -0800 Subject: [PATCH] scorch zap optimize processDocument() loc inner loop --- index/scorch/segment/mem/build.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/index/scorch/segment/mem/build.go b/index/scorch/segment/mem/build.go index a064fcba..a4b69013 100644 --- a/index/scorch/segment/mem/build.go +++ b/index/scorch/segment/mem/build.go @@ -266,21 +266,34 @@ func (s *Segment) processDocument(result *index.AnalysisResult) { locationBS := s.PostingsLocs[pid] if len(tokenFreq.Locations) > 0 { locationBS.AddInt(int(docNum)) + + locfields := s.Locfields[pid] + locstarts := s.Locstarts[pid] + locends := s.Locends[pid] + locpos := s.Locpos[pid] + locarraypos := s.Locarraypos[pid] + for _, loc := range tokenFreq.Locations { var locf = fieldID if loc.Field != "" { locf = uint16(s.getOrDefineField(loc.Field)) } - s.Locfields[pid] = append(s.Locfields[pid], locf) - s.Locstarts[pid] = append(s.Locstarts[pid], uint64(loc.Start)) - s.Locends[pid] = append(s.Locends[pid], uint64(loc.End)) - s.Locpos[pid] = append(s.Locpos[pid], uint64(loc.Position)) + locfields = append(locfields, locf) + locstarts = append(locstarts, uint64(loc.Start)) + locends = append(locends, uint64(loc.End)) + locpos = append(locpos, uint64(loc.Position)) if len(loc.ArrayPositions) > 0 { - s.Locarraypos[pid] = append(s.Locarraypos[pid], loc.ArrayPositions) + locarraypos = append(locarraypos, loc.ArrayPositions) } else { - s.Locarraypos[pid] = append(s.Locarraypos[pid], nil) + locarraypos = append(locarraypos, nil) } } + + s.Locfields[pid] = locfields + s.Locstarts[pid] = locstarts + s.Locends[pid] = locends + s.Locpos[pid] = locpos + s.Locarraypos[pid] = locarraypos } } }