Exemplo n.º 1
0
        public void CorpusSearchResultContractListDeserializationTest()
        {
            var stringResult = "<CorpusSearchResultContractList xmlns=\"http://schemas.datacontract.org/2004/07/ITJakub.Shared.Contracts.Searching.Results\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><SearchResults><CorpusSearchResultContract><BookXmlId>{E494DBC5-F3C4-4841-B4D3-C52FE99839EB}</BookXmlId><PageResultContext><ContextStructure><After>tvój.Protož konečně pravím to, že nikakež ode...</After><Before>...však s’ z břicha mého vyšel. Já jsem doma, ale ne </Before><Match>otec</Match></ContextStructure><PageName>1v</PageName><PageXmlId>t-1.body-1.div-1.div-1.p-1.pb-1</PageXmlId><VerseXmlId/><VerseName/></PageResultContext><VersionXmlId>0c6bfd7e-67d9-460d-89d0-90c069075969</VersionXmlId></CorpusSearchResultContract></SearchResults></CorpusSearchResultContractList>";
            var corpusList   = CorpusSearchResultContractList.FromXml(stringResult);

            Assert.IsNotNull(corpusList);
        }
Exemplo n.º 2
0
        public CorpusSearchResultContractList GetCorpusSearchResults(List <SearchCriteriaContract> searchCriterias)
        {
            var resultSearchCriteria = GetFilteredResultSearchCriterias(searchCriterias);

            if (resultSearchCriteria.ResultBooks == null)
            {
                return(null);
            }

            AdjustStartIndexes(resultSearchCriteria.ResultSpecifications);

            var stringResult = m_communicationManager.GetSearchCorpus(resultSearchCriteria.ToXml());

            return(CorpusSearchResultContractList.FromXml(stringResult));
        }
Exemplo n.º 3
0
        public CorpusSearchResultContractList GetCorpusSearchResults(IEnumerable <SearchCriteriaContract> searchCriterias)
        {
            var criterias = searchCriterias.ToList();

            m_authorizationManager.AuthorizeCriteria(criterias);

            var filteredCriterias    = FilterSearchCriterias(criterias);
            var nonMetadataCriterias = filteredCriterias.NonMetadataCriterias;

            if (nonMetadataCriterias.OfType <ResultRestrictionCriteriaContract>().FirstOrDefault() == null)
            {
                var databaseSearchResult =
                    m_bookVersionRepository.SearchByCriteriaQuery(new SearchCriteriaQueryCreator(filteredCriterias.ConjunctionQuery,
                                                                                                 filteredCriterias.MetadataParameters));

                if (databaseSearchResult.Count == 0)
                {
                    return(new CorpusSearchResultContractList());
                }

                var resultContract = new ResultRestrictionCriteriaContract
                {
                    ResultBooks = databaseSearchResult
                };
                nonMetadataCriterias.Add(resultContract);
            }

            if (filteredCriterias.NonMetadataCriterias.All(x => x.Key == CriteriaKey.ResultRestriction || x.Key == CriteriaKey.Result))
            {
                // Search only in SQL
                var resultRestriction   = nonMetadataCriterias.OfType <ResultRestrictionCriteriaContract>().First();
                var guidListRestriction = resultRestriction.ResultBooks.Select(x => x.Guid).ToList();
                var resultBookVersions  = m_bookVersionRepository.GetBookVersionDetailsByGuid(guidListRestriction);
                var results             = Mapper.Map <IList <CorpusSearchResultContract> >(resultBookVersions);
                var resultList          = new CorpusSearchResultContractList
                {
                    SearchResults = results
                };

                return(resultList);
            }

            // Fulltext search
            var searchResults = m_searchServiceClient.GetCorpusSearchResults(nonMetadataCriterias);

            var guidList = searchResults.SearchResults.Select(x => x.BookXmlId).ToList();
            var result   = m_bookVersionRepository.GetBookVersionDetailsByGuid(guidList);

            var resultDictionary = result.ToDictionary(x => x.Book.Guid);

            var searchResultFullContext = new List <CorpusSearchResultContract>();

            foreach (var searchResult in searchResults.SearchResults)
            {
                var localResult = Mapper.Map <CorpusSearchResultContract>(resultDictionary[searchResult.BookXmlId]);
                localResult.Notes              = searchResult.Notes;
                localResult.PageResultContext  = searchResult.PageResultContext;
                localResult.VerseResultContext = searchResult.VerseResultContext;
                searchResultFullContext.Add(localResult);
            }

            var searchList = new CorpusSearchResultContractList
            {
                SearchResults = searchResultFullContext
            };

            return(searchList);
        }