コード例 #1
0
        public override void onQueryAction(QueryAction queryAction)
        {
            //have statistics for current user
            if (_userGroupId > 0)
            {
                //if it is T type query which we are requested to rearrange
                if (queryAction.type == 2)
                {
                    var         ourFinalRanking  = new List <Tuple <int, float> >();
                    const float defFactor        = 1;
                    const float statisticsFactor = 5;

                    for (int i = 0; i < queryAction.nUrls; i++)
                    {
                        float statisticsValue = -1;
                        //generally - factors from 1 to 10 inclusively
                        float ourRank = (queryAction.nUrls - i) * defFactor;

                        var currUserGroup = _statistics[_userGroupId];
                        int indexOf       = _statistics[_userGroupId].urlsStats.IndexOf(new Tuple <int, float>(queryAction.urls[i], 0.0f));
                        if (indexOf >= 0)
                        {
                            var elem = currUserGroup.urlsStats.ElementAt(indexOf);
                            statisticsValue = elem.Item2;
                        }

                        /*int kTresh = _statistics[_userGroupId].urlsStats.Count;
                         * for (int k = 0; k < kTresh; k++)
                         * {
                         *  var elem = currUserGroup.urlsStats.ElementAt(k);
                         *  if (elem.Item1 == queryAction.urls[i])
                         *  {
                         *      statisticsValue = elem.Item2;
                         *      break;
                         *  }
                         * }*/

                        if (statisticsValue > 0)
                        {
                            ourRank += statisticsValue * statisticsFactor;
                        }
                        ourFinalRanking.Add(new Tuple <int, float>(queryAction.urls[i], ourRank));
                    }
                    ourFinalRanking.Sort((x1, x2) => x2.Item2.CompareTo(x1.Item2));

                    for (int i = 0; i < queryAction.nUrls; i++)
                    {
                        queryAction.urls[i] = ourFinalRanking.ElementAt(i).Item1;
                    }
                }
            }
            queryAction.WriteToStream(_writer);
        }
コード例 #2
0
ファイル: Portioner.cs プロジェクト: wmioduszewski/Yandex
 public override void onQueryAction(QueryAction queryAction)
 {
     queryAction.WriteToStream(_fileParts[currentDay]);
 }