private void AddDocument(Document document, IAnalyzer analyzer) { if (document.Key == Guid.Empty) document.Key = Guid.NewGuid(); DocumentStorage.Add(document); System.Diagnostics.Debug.Assert(document.Value.CanSeek); document.Value.Seek(0, SeekOrigin.Begin); var termPositions = analyzer.GetTermPositions(document.Value); foreach(var termPositionsGroup in termPositions.GroupBy(a=>a.Term)) { var term = new Term( termPositionsGroup.Key, termPositionsGroup.Select(a => new DocumentLocation { Document = document.Key, Span = a.Span })); TermStorage.Add(term); } }