From ca4bdfb4bd61e1cb9991146ac5b6bafbf5391072 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 11 Jan 2015 01:47:46 +0900 Subject: Fix Transform result cache to speed up subsequent searches --- src/pattern.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/pattern.go') diff --git a/src/pattern.go b/src/pattern.go index 93dbaf99..a9364110 100644 --- a/src/pattern.go +++ b/src/pattern.go @@ -229,16 +229,22 @@ func (p *Pattern) Match(chunk *Chunk) []*Item { return matches } +func dupItem(item *Item, offsets []Offset) *Item { + return &Item{ + text: item.text, + origText: item.origText, + transformed: item.transformed, + offsets: offsets, + rank: Rank{0, 0, item.rank.index}} +} + func (p *Pattern) fuzzyMatch(chunk *Chunk) []*Item { matches := []*Item{} for _, item := range *chunk { input := p.prepareInput(item) if sidx, eidx := p.iter(FuzzyMatch, input, p.text); sidx >= 0 { - matches = append(matches, &Item{ - text: item.text, - origText: item.origText, - offsets: []Offset{Offset{int32(sidx), int32(eidx)}}, - rank: Rank{0, 0, item.rank.index}}) + matches = append(matches, + dupItem(item, []Offset{Offset{int32(sidx), int32(eidx)}})) } } return matches @@ -262,11 +268,7 @@ func (p *Pattern) extendedMatch(chunk *Chunk) []*Item { } } if len(offsets) == len(p.terms) { - matches = append(matches, &Item{ - text: item.text, - origText: item.origText, - offsets: offsets, - rank: Rank{0, 0, item.rank.index}}) + matches = append(matches, dupItem(item, offsets)) } } return matches -- cgit v1.2.3