コード例 #1
0
 /// <summary>
 /// Reduces this scores by specified source.
 /// </summary>
 /// <param name="source">The source.</param>
 public void Reduce(instanceCountCollection <T> source)
 {
     foreach (var pair in source.items)
     {
         Reduce(pair.Key, pair.Value);
     }
 }
コード例 #2
0
        //  public DataTable buildDataTable()

        /// <summary>
        /// Adds all instances and their existing score
        /// </summary>
        /// <param name="source">The source.</param>
        public virtual void AddInstanceRange(instanceCountCollection <T> source)
        {
            foreach (var pair in source.items)
            {
                AddInstance(pair.Key, pair.Value);
            }
        }
コード例 #3
0
        public instanceCountCollection <TValue> resolveQuery(string input)
        {
            var queries = GetKeys();

            minQL = queries.Min(x => x.ToString().Length);

            instanceCountCollection <TValue> output = new instanceCountCollection <TValue>();

            foreach (Regex rg in GetKeys())
            {
                if (rg.IsMatch(input))
                {
                    int points = 1 + ((rg.ToString().Length - minQL) * 2);
                    GetByKey(rg).ForEach(x => output.AddInstance(x, points));
                }
            }
            return(output);
        }
コード例 #4
0
        //private Int32 _maxQL;
        ///// <summary>
        /////
        ///// </summary>
        //public Int32 maxQL
        //{
        //    get { return _maxQL; }
        //    set { _maxQL = value; }
        //}

        public instanceCountCollection <TValue> resolveQuerySet(IEnumerable <string> inputs)
        {
            var queries = GetKeys();

            minQL = queries.Min(x => x.ToString().Length);
            //maxQL = queries.Max(x => x.ToString().Length);

            instanceCountCollection <TValue> output = new instanceCountCollection <TValue>();

            foreach (string input in inputs)
            {
                foreach (Regex rg in GetKeys())
                {
                    if (rg.IsMatch(input))
                    {
                        int points = (rg.ToString().Length - minQL) * 2;
                        GetByKey(rg).ForEach(x => output.AddInstance(x, points));
                    }
                }
            }
            return(output);
        }
コード例 #5
0
        /// <summary>
        /// Prefered way of piping Copies complete score list to <see cref="self"/> and automatically lock this source
        /// </summary>
        /// <param name="source">The source: spider record model element that sent these count results</param>
        /// <param name="sourceID">The source (origin of these statistics) identifier.</param>
        public bool Add(instanceCountCollection <T> source, string sourceID)
        {
            if (lockedSourceIds.Contains(sourceID))
            {
                return(false);
            }

            if (!propagationPaused)
            {
                LockSource(sourceID);
            }

            self.AddInstanceRange(source);

            if (!propagationPaused)
            {
                foreach (T it in source.Keys)
                {
                    sendUpstream(it, sourceID, source[it]);
                }
            }
            return(true);
        }