diff options
Diffstat (limited to 'index')
| -rw-r--r-- | index/index.go | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/index/index.go b/index/index.go index cceabeb..60c3d9f 100644 --- a/index/index.go +++ b/index/index.go @@ -6,9 +6,11 @@ import ( ) type Posting struct { - DocId int - Count int - TitleCount int + DocId int + BodyCount int + TitleCount int + BodyPositions []int + TitlePositions []int } type InvertedIndex struct { Mu sync.RWMutex @@ -27,20 +29,24 @@ func (idx *InvertedIndex) Add(docID int, title string, bodyTokens []string) { titleTokens := analyzer.ProcessText(title) type fieldStats struct { - body int - title int + body int + bodyPositions []int + title int + titlePositions []int } docStats := make(map[string]fieldStats) - for _, token := range titleTokens { + for position, token := range titleTokens { stats := docStats[token] stats.title++ + stats.titlePositions = append(stats.titlePositions, position) docStats[token] = stats } - for _, token := range bodyTokens { + for position, token := range bodyTokens { stats := docStats[token] stats.body++ + stats.bodyPositions = append(stats.bodyPositions, position) docStats[token] = stats } @@ -51,9 +57,11 @@ func (idx *InvertedIndex) Add(docID int, title string, bodyTokens []string) { for token, stats := range docStats { idx.Data[token] = append(idx.Data[token], Posting{ - DocId: docID, - Count: stats.body, - TitleCount: stats.title, + DocId: docID, + BodyCount: stats.body, + TitleCount: stats.title, + BodyPositions: stats.bodyPositions, + TitlePositions: stats.titlePositions, }) } } |
