Beispiel #1
0
 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
                                            ));
 }
Beispiel #2
0
        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());
        }