From 9d0499041410a9b0be3686f79b4e36d7e7355dee Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 28 Jul 2026 14:57:49 +0200 Subject: added TitlePositions and BodyPositions to the posting struct to prepare for proximity scoring --- index/index.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'index/index.go') 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, }) } } -- cgit v1.2.3