private OptimizedParametrizedSearch GetSearcher(ParametrizedSearchParameters parameters) { return(new OptimizedParametrizedSearch(indexManager, parameters.DocumentTopicWeight, parameters.SectionTopicWeight, parameters.ParagraphTopicWeight, parameters.SectionTopicWeight, parameters.DocumentSingleTermWeight, parameters.SectionSingleTermWeight, parameters.ParagraphSingleTermWeight, parameters.SentenceIATEWeight, parameters.SentenceEVWeight, parameters.DocumentTopicLimit, parameters.SectionTopicLimit, parameters.ParagraphTopicLimit, parameters.SentenceTopicLimit, parameters.DocumentTokenLimit, parameters.SectionTokenLimit, parameters.ParagraphTokenLimit, parameters.SentenceEVLimit, parameters.SentenceIATELimit, parameters.UseDocumentSimilarity, parameters.UseSectionSimilarity, parameters.UseDocumentTokens, parameters.UseSectionTokens, parameters.UseParagraphTokens, parameters.UseSentenceTokens, parameters.UseDocumentTopics, parameters.UseSectionTopics, parameters.UseParagraphTopics, parameters.UseSentenceTopics )); }
public T FindTranslation <T>(Guid sourceId, string sourceLanguage, string targetLanguage, ParametrizedSearchParameters searchParameters) where T : class, IMarcellEntity { //TODO: Update to sent parameters OptimizedParametrizedSearch searchProvider; if (searchParameters == null || !searchParameters.IsSet()) { searchProvider = m_searcherCache[defaultSearchParameters]; } else { searchProvider = GetSearcher(searchParameters); } ParametrizedSearchQuery alignQuery; if (typeof(T) == typeof(Sentence)) { var sourceSentence = searchProvider.GetSentence(sourceLanguage, sourceId); if (sourceSentence == null) { return(null); } alignQuery = new ParametrizedSearchQuery { Language = targetLanguage, DocumentTokens = sourceSentence.DocumentSimilarityData.ConsolidatedTokens.ToArray(), DocumentTopics = sourceSentence.DocumentSimilarityData.ConsolidatedTopics.ToArray(), SectionTokens = sourceSentence.SectionSimilarityData.ConsolidatedTokens.ToArray(), SectionTopics = sourceSentence.SectionSimilarityData.ConsolidatedTopics.ToArray(), ParagraphTokens = sourceSentence.ParagraphSimilarityData.ConsolidatedTokens.ToArray(), ParagraphTopics = sourceSentence.ParagraphSimilarityData.ConsolidatedTopics.ToArray(), SentenceTokens = sourceSentence.SentenceSimilarityData.ConsolidatedTokens.ToArray(), SentenceTopics = sourceSentence.SentenceSimilarityData.ConsolidatedTopics.ToArray(), SearchIn = IndexObjectType.SentenceIndex }; } else { var sourceParagraph = searchProvider.GetParagraph(sourceLanguage, sourceId); if (sourceParagraph == null) { return(null); } alignQuery = new ParametrizedSearchQuery { Language = targetLanguage, DocumentTokens = sourceParagraph.DocumentSimilarityData.ConsolidatedTokens.ToArray(), DocumentTopics = sourceParagraph.DocumentSimilarityData.ConsolidatedTopics.ToArray(), SectionTokens = sourceParagraph.SectionSimilarityData.ConsolidatedTokens.ToArray(), SectionTopics = sourceParagraph.SectionSimilarityData.ConsolidatedTopics.ToArray(), ParagraphTokens = sourceParagraph.ParagraphSimilarityData.ConsolidatedTokens.ToArray(), ParagraphTopics = sourceParagraph.ParagraphSimilarityData.ConsolidatedTopics.ToArray(), SearchIn = IndexObjectType.ParagraphIndex }; } return(searchProvider.PerformSearch <T>(alignQuery, 1, 1).ResultList.FirstOrDefault()); }