コード例 #1
0
ファイル: Ranker.cs プロジェクト: idodoroz4/retrieval-engine
 private double cossim_denumerator(TermInDoc item)
 {
     double sum = 0;
     
     foreach (var item2 in _tf_all_docs[item._doc_id])
     {
         sum += Math.Pow(tf_idf(item._doc_id,  item2.Key),2);
     }
     
     return Math.Sqrt(sum * _num_terms_in_query);
 }
コード例 #2
0
ファイル: Ranker.cs プロジェクト: idodoroz4/retrieval-engine
        private double cossim_numerator(TermInDoc item)
        {
            double sum = 0;
            
            foreach (string term in _ExistingTerms)
            {
                sum += tf_idf(item._doc_id, term);
                if (is_in_headline(item._doc_id, term))
                    sum *= 2;
            }

            if (sum == 0)
                Console.WriteLine();
            
            return sum;
        }
コード例 #3
0
ファイル: Indexer.cs プロジェクト: idodoroz4/retrieval-engine
 // using the psaudo LRU idea, when a term is already in cache, promote it by a flag is_popular
 private void promote_queue(string key, TermInDoc term)
 {
      // needs to promote
     cache[key].Add(term);
     main_dic[key].is_popular = true;
 }
コード例 #4
0
ファイル: Indexer.cs プロジェクト: idodoroz4/retrieval-engine
 // adding to the inverted files dictionary
 private void add_to_dic(string p, TermInDoc termInDoc)
 {
     Posting post = new Posting();
     main_dic.TryAdd(p, post);
 }
コード例 #5
0
ファイル: Indexer.cs プロジェクト: idodoroz4/retrieval-engine
 // add term to the cache
 private void add_to_cache(string key, TermInDoc term)
 {
     ConcurrentBag<TermInDoc> list = new ConcurrentBag<TermInDoc>();
     list.Add(term);
     if (queue.Count < _cache_size)
     {
         queue.Enqueue(key);
     }
     else
     {
         write2(_numOfTermsInPosting);
         queue.Enqueue(key);
     }
     cache.TryAdd(key, list);
 }