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)); }
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"; } }
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); }
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)); }
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); }
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); }
private IEnumerable <ElasticDeveloperData> GetElasticDevelopers(IEnumerable <DeveloperEntity> developers, CVKind cvKind) { foreach (var item in developers) { yield return(elastic.GetDeveloperById(item.Id, cvKind)); } }
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); }