Esempio n. 1
0
        private void Update(Document document, Dictionary<string, Dictionary<int, List<int>>> index, Dictionary<int, string> docs)
        {
            var doc = docs.Where(x => x.Value == document.Url)
                          .Select(x => new { Key = x.Key, Value = x.Value })
                          .FirstOrDefault();

            var id = (doc != null) ? doc.Key : ((docs != null && docs.Count > 0) ? docs.Max(x => x.Key) : 0);

            // Add this document's URL to the lookup list if it isn't already there
            if(doc == null)
				docs.Add(++id, document.Url);

            var words = _contentProcessor.Tokenise(document.Content);

            for (var i = 0; i < words.Count; i++)
            {
                var word = words[i];

                // If the index doesn't already contain an entry 
                // for this word, add one
                if (!index.ContainsKey(word))
                    index.Add(word, new Dictionary<int, List<int>>());

                // If the entry for this word doesn't contain an entry 
                // for this document's URL, add one
                if (!index[word].ContainsKey(id))
                    index[word].Add(id, new List<int>());

                // Add the index of this word in the document to 
                // the list for this document/word
                index[word][id].Add(i);
            }
        }
Esempio n. 2
0
        public void AddDocument(Document document)
        {
            var index = LoadIndex();
            var docs = LoadDocs();

            Update(document, index, docs);

            SaveIndex(index, docs);

            DocumentCount ++;
        }