private SearchSettings GetSearchSettings(SearchMode mode) { SearchSettings settings = new SearchSettings(); settings.MaxResults = 5; settings.MinScore = 70; settings.Mode = mode; settings.FindPenalty(PenaltyType.FilterPenalty); return(settings); }
/// <summary> /// Creates the translation unit as it is later shown in the Translation Results /// window of SDL Trados Studio. This member also determines the match score /// (in our implementation always 100%, as only exact matches are supported) /// as well as the confirmation lelvel, i.e. Translated. /// </summary> /// <param name="settings"></param> /// <param name="searchSegment"></param> /// <param name="searchResultSegment"></param> /// <param name="sourceSegment"></param> /// <param name="formattingPenalty"></param> /// <returns></returns> #region "CreateSearchResult" private SearchResult CreateSearchResult(SearchSettings settings, Segment searchSegment, Sdl.Community.Taus.TM.Provider.Segment.Segment searchResultSegment, string sourceSegment, bool formattingPenalty) { #region "TranslationUnit" var tu = new TranslationUnit(); var searchSegmentSource = new Segment(); var searchSegmentTarget = new Segment(); searchSegmentSource.Add(searchResultSegment.SourceText); searchSegmentTarget.Add(searchResultSegment.TargetText); tu.SourceSegment = searchSegmentSource; tu.TargetSegment = searchSegmentTarget; tu.ResourceId = new PersistentObjectToken(tu.GetHashCode(), Guid.Empty); #endregion #region "TuProperties" var score = Convert.ToInt32(searchResultSegment.MatchPercentage); tu.Origin = TranslationUnitOrigin.TM; #region | properties | if (searchResultSegment.Industry.Name.Trim() != string.Empty) { var fieldValue = new MultiplePicklistFieldValue("industry"); fieldValue.Add(searchResultSegment.Industry.Name + " [" + searchResultSegment.Industry.Id + "]"); tu.FieldValues.Add(fieldValue); } if (searchResultSegment.ContentType.Name.Trim() != string.Empty) { var fieldValue = new MultiplePicklistFieldValue("contentType"); fieldValue.Add(searchResultSegment.ContentType.Name + " [" + searchResultSegment.ContentType.Id + "]"); tu.FieldValues.Add(fieldValue); } if (searchResultSegment.Owner.Name.Trim() != string.Empty) { var fieldValue = new MultiplePicklistFieldValue("owner"); fieldValue.Add(searchResultSegment.Owner.Name + " [" + searchResultSegment.Owner.Id + "]"); tu.FieldValues.Add(fieldValue); } if (searchResultSegment.Product.Name.Trim() != string.Empty) { var fieldValue = new MultiplePicklistFieldValue("product"); fieldValue.Add(searchResultSegment.Product.Name + " [" + searchResultSegment.Product.Id + "]"); tu.FieldValues.Add(fieldValue); } if (searchResultSegment.Provider.Name.Trim() != string.Empty) { var fieldValue = new MultiplePicklistFieldValue("provider"); fieldValue.Add(searchResultSegment.Provider.Name + " [" + searchResultSegment.Provider.Id + "]"); tu.FieldValues.Add(fieldValue); } #endregion var searchResult = new SearchResult(tu) { ScoringResult = new ScoringResult { BaseScore = score } }; if (settings.Mode == SearchMode.ConcordanceSearch) { searchSegmentSource.Tokens = Tokenize(searchSegmentSource); searchResult.ScoringResult.MatchingConcordanceRanges = CollectConcordanceMatchRanges(searchSegmentSource, _visitor.PlainText); } else if (settings.Mode == SearchMode.TargetConcordanceSearch) { searchSegmentTarget.Tokens = Tokenize(searchSegmentTarget); searchResult.ScoringResult.MatchingConcordanceRanges = CollectConcordanceMatchRanges(searchSegmentTarget, _visitor.PlainText); } var providerPenalty = settings.FindPenalty(PenaltyType.ProviderPenalty); if (providerPenalty != null && providerPenalty.Malus > 0) { var penalty = new Penalty(PenaltyType.ProviderPenalty, settings.FindPenalty(PenaltyType.ProviderPenalty).Malus); searchResult.ScoringResult.ApplyPenalty(penalty); } if (searchResult.ScoringResult.BaseScore >= settings.MinScore) { searchResult.TranslationProposal = searchResult.MemoryTranslationUnit; if (searchSegment.HasTags) { #region "Draft" tu.ConfirmationLevel = ConfirmationLevel.Draft; #endregion #region "FormattingPenalty" var penalty = new Penalty(PenaltyType.MemoryTagsDeleted, settings.FindPenalty(PenaltyType.MemoryTagsDeleted).Malus); searchResult.ScoringResult.ApplyPenalty(penalty); #endregion } else { tu.ConfirmationLevel = ConfirmationLevel.Translated; } } else { searchResult = null; } #endregion return(searchResult); }