private static void ApplyDecay(IInferenceRecipient recipient, long currentTimeWindowNumber, long timeWindowNumberAtLastRun) { if (recipient.RawRecipientWeight == 0.0) { Util.ThrowOnConditionFailed(recipient.RecipientRank == int.MaxValue, "Unexpected rank for unused recipient"); return; } Util.ThrowOnConditionFailed(recipient.LastUsedInTimeWindow > 0L && recipient.LastUsedInTimeWindow <= currentTimeWindowNumber, string.Format("Unexpected LastUsedInTimeWindow value: {0}. CurrentTimeWindowNumber: {1}.", recipient.LastUsedInTimeWindow, currentTimeWindowNumber)); long num = currentTimeWindowNumber - recipient.LastUsedInTimeWindow; long num2 = timeWindowNumberAtLastRun - recipient.LastUsedInTimeWindow; foreach (PeopleRelevanceClassifier.Decay decay in PeopleRelevanceClassifier.DecayConfig) { if (num >= decay.TimeWindowTreshold && num2 < decay.TimeWindowTreshold) { double val = Math.Max(recipient.RawRecipientWeight * decay.PercentDecay, (double)decay.MinDecay); double num3 = Math.Min(recipient.RawRecipientWeight, val); recipient.RawRecipientWeight -= num3; } if (recipient.RawRecipientWeight == 0.0) { recipient.RecipientRank = int.MaxValue; return; } } }
private void DetermineCaptureFlag(IInferenceRecipient recipient, DocumentProcessingContext processingContext) { int relevanceCategory = recipient.RelevanceCategory; int captureFlag = recipient.CaptureFlag; int num = 0; if (relevanceCategory == 2147483647) { if (recipient.RelevanceCategoryAtLastCapture != 2147483647) { num = 4; } } else if (recipient.RelevanceCategoryAtLastCapture == 2147483647) { num = 1; } else if (relevanceCategory != recipient.RelevanceCategoryAtLastCapture) { num = 2; } recipient.CaptureFlag = num; if (captureFlag != num) { this.DiagnosticsSession.LogDiagnosticsInfo(DiagnosticsLoggingTag.Informational, string.Format("U={0} - Recipient cache entry {1} capture flag change: CF={2} CFB={3} R={4} W={5} RCC={6}", new object[] { (processingContext != null) ? processingContext.Session.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString() : string.Empty, recipient.SmtpAddress, num, captureFlag, recipient.RecipientRank, recipient.RawRecipientWeight, recipient.RelevanceCategoryAtLastCapture }), new object[0]); } }
internal static int GetRelevanceCategoryForRecipient(IInferenceRecipient recipient) { return(InferenceRecipient.GetRelevanceCategoryForRank(recipient.RecipientRank)); }