예제 #1
0
        public async Task <Developer> GetItemAsync(int id, CVKind isExtended)
        {
            var developerEntity  = developerRepository.GetItem(id);
            var elasticDeveloper = elastic.GetDeveloperById(id, isExtended);

            return(await GetMergeDeveloperAsync(developerEntity, elasticDeveloper));
        }
예제 #2
0
        public ElasticDeveloperData(ElasticDeveloperData data, CVKind isExtended)
        {
            Id         = data.Id;
            Name       = data.Name;
            ExternalCV = data.ExternalCV;

            if (isExtended == CVKind.Internal)
            {
                InternalCV = data.InternalCV;
            }
            else
            {
                InternalCV = "Internal CV is not available";
            }
        }
예제 #3
0
        public async Task <IEnumerable <Developer> > GetItemsListAsync(CVKind isExtended)
        {
            var developerEntities = developerRepository.GetItemsList();
            var elasticDevelopers = GetElasticDevelopers(developerEntities, isExtended);

            var e1 = developerEntities.GetEnumerator();
            var e2 = elasticDevelopers.GetEnumerator();

            List <Developer> ret = new List <Developer>();

            while (e1.MoveNext() && e2.MoveNext())
            {
                ret.Add(await GetMergeDeveloperAsync(e1.Current, e2.Current));
            }
            return(ret);
        }
예제 #4
0
        public ElasticDeveloperData GetDeveloperById(int id, CVKind isExtended) //works!
        {
            var searchResponse1 = clientDeveloper.Search <ElasticDeveloperData>(s => s
                                                                                .Query(q => q
                                                                                       .Match(m => m
                                                                                              .Field(f => f.Id).Query(id.ToString())
                                                                                              )
                                                                                       )
                                                                                );

            if (searchResponse1.Hits.Count > 1)
            {
                throw new Exception("ElasticSearch: Many developers with same id found: " + id);
            }
            else if (searchResponse1.Hits.Count == 0)
            {
                return(ElasticDeveloperData.NotFound);
            }
            return(new ElasticDeveloperData(searchResponse1.Hits.First().Source, isExtended));
        }
예제 #5
0
        private List <ElasticDeveloperData> HitToDataConvertDeveloper(ISearchResponse <ElasticDeveloperData> searchResponse, CVKind isExtended)
        {
            List <ElasticDeveloperData> resultList = new List <ElasticDeveloperData>();

            foreach (var hit in searchResponse.Hits)
            {
                resultList.Add(new ElasticDeveloperData(hit.Source, isExtended));
            }
            return(resultList);
        }
예제 #6
0
        public List <ElasticDeveloperData> SearchItemsDeveloper(string query, Paging paging, CVKind isExtended)
        {
            int from = paging.From;
            int size = paging.Size;
            var sr   = clientDeveloper.Search <ElasticDeveloperData>(
                s => s.From(from)
                .Size(size)
                .Query(
                    q => q.Bool(
                        b => b.Should(
                            m => m.Match(
                                mp => mp.Field(fg => fg.Name)
                                .Query(query)
                                .Fuzziness(Fuzziness.Auto)
                                ),
                            m => m.Match(
                                mp => mp.Field(fg => fg.InternalCV)
                                .Query(query)
                                .Fuzziness(Fuzziness.Auto)
                                )
                            )
                        )
                    )
                );
            var returnlist = new List <ElasticProjectData>();

            List <ElasticDeveloperData> resultList = new List <ElasticDeveloperData>();

            resultList = HitToDataConvertDeveloper(sr, isExtended);
            return(resultList);
        }
예제 #7
0
 private IEnumerable <ElasticDeveloperData> GetElasticDevelopers(IEnumerable <DeveloperEntity> developers, CVKind cvKind)
 {
     foreach (var item in developers)
     {
         yield return(elastic.GetDeveloperById(item.Id, cvKind));
     }
 }
예제 #8
0
        public async Task <IEnumerable <Developer> > SearchAsync(string request, Paging paging, CVKind cvKind)
        {
            var elasticDevelopers = elastic.SearchItemsDeveloper(request, paging, cvKind);
            var developerEntities = GetEntityDevelopers(elasticDevelopers);

            var e1 = developerEntities.GetEnumerator();
            var e2 = elasticDevelopers.GetEnumerator();

            List <Developer> ret = new List <Developer>();

            while (e1.MoveNext() && e2.MoveNext())
            {
                ret.Add(await GetMergeDeveloperAsync(e1.Current, e2.Current));
            }
            return(ret);
        }