示例#1
0
        private static void AddJobs(MemberContent content, BoostingDocumentBuilder docBuilder, IList <Job> jobs)
        {
            if (jobs == null)
            {
                return;
            }

            for (var index = 0; index < jobs.Count; index++)
            {
                var job = jobs[index];

                // Content field.

                docBuilder.AddText(FieldName.Content, job.Title);
                docBuilder.AddText(FieldName.Content, job.Description);

                docBuilder.AddText(FieldName.Content_Exact, job.Title);
                docBuilder.AddText(FieldName.Content_Exact, job.Description);

                // Job title fields.

                docBuilder.AddText(FieldName.JobTitle, job.Title);
                docBuilder.AddText(FieldName.JobTitle_Exact, job.Title);

                if (index == 0)
                {
                    docBuilder.AddText(FieldName.JobTitleLast, job.Title);
                    docBuilder.AddText(FieldName.JobTitleLast_Exact, job.Title);
                }

                if (index < 3)
                {
                    docBuilder.AddText(FieldName.JobTitleRecent, job.Title);
                    docBuilder.AddText(FieldName.JobTitleRecent_Exact, job.Title);
                }

                if (content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Resume) && content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.RecentEmployers))
                {
                    docBuilder.AddText(FieldName.Content, job.Company);
                    docBuilder.AddText(FieldName.Content_Exact, job.Company);

                    // Employer fields.

                    docBuilder.AddText(FieldName.Employer, job.Company);
                    docBuilder.AddText(FieldName.Employer_Exact, job.Company);

                    if (index == 0)
                    {
                        docBuilder.AddText(FieldName.EmployerLast, job.Company);
                        docBuilder.AddText(FieldName.EmployerLast_Exact, job.Company);
                    }

                    if (index < 3)
                    {
                        docBuilder.AddText(FieldName.EmployerRecent, job.Company);
                        docBuilder.AddText(FieldName.EmployerRecent_Exact, job.Company);
                    }
                }
            }
        }
示例#2
0
        /// <inheritdoc/>
        public override void VisitObjectMember(object container, ObjectDescriptor containerDescriptor, IMemberDescriptor member, object value)
        {
            if (!NotifyNodeConstructing(containerDescriptor, member))
            {
                return;
            }

            // If this member should contains a reference, create it now.
            IReference      reference      = CreateReferenceForNode(member.Type, value);
            ModelNode       containerNode  = GetContextNode();
            ITypeDescriptor typeDescriptor = TypeDescriptorFactory.Find(member.Type);
            IContent        content        = new MemberContent(containerNode.Content, member, typeDescriptor, IsPrimitiveType(member.Type), reference);
            var             node           = new ModelNode(member.Name, content, Guid.NewGuid());

            containerNode.AddChild(node);

            if (reference != null)
            {
                referenceContents.Add(content);
            }

            if (!(reference is ObjectReference))
            {
                // For enumerable references, we visit the member to allow VisitCollection or VisitDictionary to enrich correctly the node.
                PushContextNode(node);
                Visit(value);
                PopContextNode();
            }

            AvailableCommands.Where(x => x.CanAttach(node.Content.Descriptor, (MemberDescriptorBase)member)).ForEach(node.AddCommand);
            NotifyNodeConstructed(content);

            node.Seal();
        }
        void IContentHandler.AddContent(Document document, MemberContent content)
        {
            var value = content.Candidate.VisaStatus.Encode();
            var field = new Field(FieldName.VisaStatus, value, Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);

            field.setOmitTermFreqAndPositions(true);
            _booster.SetBoost(field);
            document.add(field);
        }
示例#4
0
 protected override bool ShouldReconcileItem(MemberContent member, IGraphNode targetNode, object localValue, object baseValue, bool isReference)
 {
     // Always reconcile referenced parts
     if (isReference && IsReferencedPart(member, targetNode))
     {
         return(true);
     }
     return(base.ShouldReconcileItem(member, targetNode, localValue, baseValue, isReference));
 }
示例#5
0
 private void AddMember(MemberContent content)
 {
     content.Member.Address = new Address {
         Location = _locationQuery.ResolveLocation(_locationQuery.GetCountry("Australia"), null)
     };
     _membersCommand.CreateMember(content.Member);
     content.Candidate.Id = content.Member.Id;
     _candidatesCommand.CreateCandidate(content.Candidate);
     _searchService.UpdateMember(content.Member.Id);
 }
        /// <summary>
        /// Visits a hierarchy of node, starting by the given root node.
        /// </summary>
        /// <param name="node">The root node of the visit</param>
        /// <param name="memberContent">The member content containing the node to visit, if relevant. This is used to properly check if the root node should be visited.</param>
        /// <param name="initialPath">The initial path of the root node, if this visit occurs in the context of a sub-hierarchy. Can be null.</param>
        public virtual void Visit(IContentNode node, MemberContent memberContent = null, GraphNodePath initialPath = null)
        {
            var path = initialPath ?? new GraphNodePath(node);

            RootNode = node;
            if (ShouldVisitNode(memberContent, node))
            {
                VisitNode(node, path);
            }
            RootNode = null;
        }
示例#7
0
        public void SortByCandidateStatusTest()
        {
            // Create content.

            var activelyLooking = Guid.NewGuid();
            var content         = new MemberContent {
                Member = new Member {
                    Id = activelyLooking
                }, Candidate = new Candidate {
                    Status = CandidateStatus.ActivelyLooking
                }
            };

            IndexContent(content);

            var availableNow = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = availableNow
                }, Candidate = new Candidate {
                    Status = CandidateStatus.AvailableNow
                }
            };
            IndexContent(content);

            var unspecified = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = unspecified
                }, Candidate = new Candidate {
                    Status = CandidateStatus.Unspecified
                }
            };
            IndexContent(content);

            // Default order.

            var memberQuery = new MemberSearchQuery {
                SortOrder = MemberSortOrder.Availability
            };
            var searchResults = Search(memberQuery, 0, 10);

            CollectionAssert.AreEqual(new[] { availableNow, activelyLooking, unspecified }, searchResults.MemberIds.ToArray());

            // Reverse order.

            memberQuery = new MemberSearchQuery {
                SortOrder = MemberSortOrder.Availability, ReverseSortOrder = true
            };
            searchResults = Search(memberQuery, 0, 10);
            CollectionAssert.AreEqual(new[] { unspecified, activelyLooking, availableNow }, searchResults.MemberIds.ToArray());
        }
 void IContentHandler.AddContent(Document document, MemberContent content)
 {
     foreach (var status in Split(content.Member.EthnicStatus))
     {
         var value = Encode(status);
         var field = new Field(FieldName.EthnicStatus, value, Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);
         field.setOmitTermFreqAndPositions(true);
         _booster.SetBoost(field);
         document.add(field);
     }
 }
        void IContentHandler.AddContent(Document document, MemberContent content)
        {
            var lastUpdatedTime = new[]
            {
                content.Member.LastUpdatedTime,
                content.Candidate.LastUpdatedTime,
                content.Resume == null ? DateTime.MinValue : content.Resume.LastUpdatedTime,
            }.Max();

            AddContent(document, lastUpdatedTime);
        }
示例#10
0
        void IContentHandler.AddContent(Document document, MemberContent content)
        {
            var location = content.Member.Address != null
                ? content.Member.Address.Location
                : null;

            var relocationLocations = content.Candidate.RelocationPreference == RelocationPreference.No
                ? null
                : content.Candidate.RelocationLocations;

            AddContent(document, location, relocationLocations);
        }
示例#11
0
 void IContentHandler.AddContent(Document document, MemberContent content)
 {
     if (content.Member.AffiliateId != null &&
         content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Resume) &&
         content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Communities))
     {
         var field = new Field(FieldName.Community, content.Member.AffiliateId.Value.ToFieldValue(), Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);
         field.setOmitTermFreqAndPositions(true);
         _booster.SetBoost(field);
         document.add(field);
     }
 }
        public override bool IsReferencedPart(MemberContent member, IGraphNode targetNode)
        {
            // If we're not accessing the target node through a member (eg. the target node is the root node of the visit)
            // or if we're visiting the member itself and not yet its target, then we're not a referenced part.
            if (member == null || member == targetNode.Content)
            {
                return(false);
            }

            if (typeof(TAssetPart).IsAssignableFrom(targetNode.Content.Type))
            {
                // Check if we're the part referenced by a part design - other cases are references
                return(member.Container.OwnerNode.Content.Type != typeof(TAssetPartDesign));
            }
            return(base.IsReferencedPart(member, targetNode));
        }
示例#13
0
        public void TestRelocationCountry()
        {
            // Member is located in an unstructured location in Australia, and is willing to relocate to Australia.

            var content = new MemberContent
            {
                Member = new Member
                {
                    Id      = Guid.NewGuid(),
                    Address = new Address {
                        Location = _locationQuery.ResolveLocation(_locationQuery.GetCountry("Australia"), "Winnipeg MB r3e 1w1")
                    },
                },
                Candidate = new Candidate
                {
                    RelocationPreference = RelocationPreference.Yes,
                    RelocationLocations  = new List <LocationReference>
                    {
                        _locationQuery.ResolveLocation(_locationQuery.GetCountry("Australia"), null),
                    },
                }
            };

            IndexContent(content);

            // Search in Mackay.

            var memberQuery = new MemberSearchQuery
            {
                Location          = _locationQuery.ResolveLocation(_locationQuery.GetCountry("Australia"), "Mackay QLD 4740"),
                Distance          = 5,
                IncludeRelocating = false,
            };
            var results = Search(memberQuery, 0, 10);

            Assert.AreEqual(0, results.MemberIds.Count);

            memberQuery = new MemberSearchQuery
            {
                Location          = _locationQuery.ResolveLocation(_locationQuery.GetCountry("Australia"), "Mackay QLD 4740"),
                Distance          = 5,
                IncludeRelocating = true,
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(1, results.MemberIds.Count);
        }
示例#14
0
        void IContentHandler.AddContent(Document document, MemberContent content)
        {
            Salary salary = null;

            if (content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Resume) &&
                content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Salary))
            {
                // Convert to yearly to standardise search.

                salary = content.Candidate.DesiredSalary;
                if (salary != null)
                {
                    salary = salary.ToRate(SalaryRate.Year);
                }
            }

            AddContent(document, salary == null ? null : salary.LowerBound, salary == null ? null : salary.UpperBound, false);
        }
示例#15
0
        protected virtual bool ShouldReconcileItem(MemberContent member, IGraphNode targetNode, object localValue, object baseValue, bool isReference)
        {
            if (isReference)
            {
                // Reference type, we check matches by type
                return(baseValue?.GetType() != localValue?.GetType());
            }

            // Content reference (note: they are not treated as reference
            if (AssetRegistry.IsContentType(localValue?.GetType()) || AssetRegistry.IsContentType(localValue?.GetType()))
            {
                var localRef = AttachedReferenceManager.GetAttachedReference(localValue);
                var baseRef  = AttachedReferenceManager.GetAttachedReference(baseValue);
                return(localRef?.Id != baseRef?.Id || localRef?.Url != baseRef?.Url);
            }

            // Value type, we check for equality
            return(!Equals(localValue, baseValue));
        }
示例#16
0
        public void CommunityFilterTest()
        {
            var community = Guid.NewGuid();

            // Create content.

            var communal = Guid.NewGuid();
            var content  = new MemberContent {
                Member = new Member {
                    Id = communal, AffiliateId = community
                }, Candidate = new Candidate()
            };

            IndexContent(content);

            var independent = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = independent
                }, Candidate = new Candidate()
            };
            IndexContent(content);

            // Search without filter.

            var memberQuery = new MemberSearchQuery();
            var results     = Search(memberQuery, 0, 10);

            Assert.AreEqual(2, results.MemberIds.Count);

            // Search for community.

            memberQuery = new MemberSearchQuery {
                CommunityId = community
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(1, results.MemberIds.Count);
            Assert.IsTrue(new[] { communal }.CollectionEqual(results.MemberIds));
        }
示例#17
0
        void IContentHandler.AddContent(Document document, MemberContent content)
        {
            // Only include if visible.

            if (!content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Resume) ||
                !content.Member.VisibilitySettings.Professional.EmploymentVisibility.IsFlagSet(ProfessionalVisibility.Name))
            {
                return;
            }

            if (!string.IsNullOrEmpty(content.Member.FirstName))
            {
                var field = new Field(FieldName.FirstName, content.Member.FirstName.ToLowerInvariant(), Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);
                _booster.SetBoost(field);
                document.add(field);
                field = new Field(FieldName.Name, _analyzer.tokenStream(FieldName.FirstName, new java.io.StringReader(content.Member.FirstName)));
                _booster.SetBoost(field);
                document.add(field);
                field = new Field(FieldName.Name_Exact, _analyzer.tokenStream(FieldName.FirstName_Exact, new java.io.StringReader(content.Member.FirstName)));
                _booster.SetBoost(field);
                document.add(field);
            }

            if (!string.IsNullOrEmpty(content.Member.LastName))
            {
                var field = new Field(FieldName.LastName, content.Member.LastName.ToLowerInvariant(), Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);
                _booster.SetBoost(field);
                document.add(field);
                field = new Field(FieldName.Name, _analyzer.tokenStream(FieldName.LastName, new java.io.StringReader(content.Member.LastName)));
                _booster.SetBoost(field);
                document.add(field);
                field = new Field(FieldName.Name_Exact, _analyzer.tokenStream(FieldName.LastName_Exact, new java.io.StringReader(content.Member.LastName)));
                _booster.SetBoost(field);
                document.add(field);
            }
        }
示例#18
0
        public void IndustryFilterTest()
        {
            var bankingIndustry    = Guid.NewGuid();
            var accountingIndustry = Guid.NewGuid();

            // Create content.

            var banking = Guid.NewGuid();
            var content = new MemberContent {
                Member = new Member {
                    Id = banking
                }, Candidate = new Candidate {
                    Industries = new[] { new Industry {
                                             Id = bankingIndustry
                                         } }
                }
            };

            IndexContent(content);

            var accounting = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = accounting
                }, Candidate = new Candidate {
                    Industries = new[] { new Industry {
                                             Id = accountingIndustry
                                         } }
                }
            };
            IndexContent(content);

            var both = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = both
                }, Candidate = new Candidate {
                    Industries = new[] { new Industry {
                                             Id = bankingIndustry
                                         }, new Industry {
                                             Id = accountingIndustry
                                         } }
                }
            };
            IndexContent(content);

            var none = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = none
                }, Candidate = new Candidate()
            };
            IndexContent(content);

            // Search without filter.

            var memberQuery = new MemberSearchQuery();
            var results     = Search(memberQuery, 0, 10);

            Assert.AreEqual(4, results.MemberIds.Count);

            memberQuery = new MemberSearchQuery {
                IndustryIds = new Guid[0]
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(4, results.MemberIds.Count);

            // Search for banking.

            memberQuery = new MemberSearchQuery {
                IndustryIds = new[] { bankingIndustry }
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(2, results.MemberIds.Count);
            Assert.IsTrue(new[] { banking, both }.CollectionEqual(results.MemberIds));

            // Search for banking or accounting.

            memberQuery = new MemberSearchQuery {
                IndustryIds = new[] { bankingIndustry, accountingIndustry }
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(3, results.MemberIds.Count);
            Assert.IsTrue(new[] { banking, accounting, both }.CollectionEqual(results.MemberIds));
        }
示例#19
0
        public void EthnicStatusFilterTest()
        {
            // Create content.

            var aboriginal = Guid.NewGuid();
            var content    = new MemberContent {
                Member = new Member {
                    Id = aboriginal, EthnicStatus = EthnicStatus.Aboriginal
                }, Candidate = new Candidate()
            };

            IndexContent(content);

            var islander = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = islander, EthnicStatus = EthnicStatus.TorresIslander
                }, Candidate = new Candidate()
            };
            IndexContent(content);

            var both = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = both, EthnicStatus = EthnicStatus.Aboriginal | EthnicStatus.TorresIslander
                }, Candidate = new Candidate()
            };
            IndexContent(content);

            var none = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = none
                }, Candidate = new Candidate()
            };
            IndexContent(content);

            // Search without filter.

            var memberQuery = new MemberSearchQuery();
            var results     = Search(memberQuery, 0, 10);

            Assert.AreEqual(4, results.MemberIds.Count);

            memberQuery = new MemberSearchQuery {
                EthnicStatus = default(EthnicStatus)
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(4, results.MemberIds.Count);

            // Search for Aboriginal.

            memberQuery = new MemberSearchQuery {
                EthnicStatus = EthnicStatus.Aboriginal
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(2, results.MemberIds.Count);
            Assert.IsTrue(new[] { aboriginal, both }.CollectionEqual(results.MemberIds));

            // Search for Both.

            memberQuery = new MemberSearchQuery {
                EthnicStatus = EthnicStatus.Aboriginal | EthnicStatus.TorresIslander
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(3, results.MemberIds.Count);
            Assert.IsTrue(new[] { aboriginal, islander, both }.CollectionEqual(results.MemberIds));
        }
示例#20
0
 protected override bool ShouldVisitNode(MemberContent memberContent, IGraphNode targetNode)
 {
     // Make sure it's actually a target (not a member) node.
     return(!propertyGraph.IsReferencedPart(memberContent, targetNode) && base.ShouldVisitNode(memberContent, targetNode));
 }
示例#21
0
 public override void Visit(IContentNode node, MemberContent memberContent = null, GraphNodePath initialPath = null)
 {
     Result.Clear();
     base.Visit(node, memberContent, initialPath);
 }
示例#22
0
        public void DesiredJobTypesFilterTest()
        {
            // Create content.

            var fullTime = Guid.NewGuid();
            var content  = new MemberContent {
                Member = new Member {
                    Id = fullTime
                }, Candidate = new Candidate {
                    DesiredJobTypes = JobTypes.FullTime
                }
            };

            IndexContent(content);

            var partTime = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = partTime
                }, Candidate = new Candidate {
                    DesiredJobTypes = JobTypes.PartTime
                }
            };
            IndexContent(content);

            var contract = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = contract
                }, Candidate = new Candidate {
                    DesiredJobTypes = JobTypes.Contract
                }
            };
            IndexContent(content);

            var fullOrPartTime = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = fullOrPartTime
                }, Candidate = new Candidate {
                    DesiredJobTypes = JobTypes.FullTime | JobTypes.PartTime
                }
            };
            IndexContent(content);

            var all = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = all
                }, Candidate = new Candidate {
                    DesiredJobTypes = JobTypes.All
                }
            };
            IndexContent(content);

            // Search without filter.

            var memberQuery = new MemberSearchQuery();
            var results     = Search(memberQuery, 0, 10);

            Assert.AreEqual(5, results.MemberIds.Count);

            // Search for FullTime.

            memberQuery = new MemberSearchQuery {
                DesiredJobTypes = JobTypes.FullTime
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(3, results.MemberIds.Count);
            Assert.IsTrue(new[] { fullTime, fullOrPartTime, all }.CollectionEqual(results.MemberIds));

            // Search for Contract.

            memberQuery = new MemberSearchQuery {
                DesiredJobTypes = JobTypes.Contract
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(2, results.MemberIds.Count);
            Assert.IsTrue(new[] { contract, all }.CollectionEqual(results.MemberIds));

            // Search for FullTime or Contract.

            memberQuery = new MemberSearchQuery {
                DesiredJobTypes = JobTypes.FullTime | JobTypes.Contract
            };
            results = Search(memberQuery, 0, 10);
            Assert.AreEqual(4, results.MemberIds.Count);
            Assert.IsTrue(new[] { fullTime, contract, fullOrPartTime, all }.CollectionEqual(results.MemberIds));
        }
示例#23
0
 void IContentHandler.AddContent(Document document, MemberContent content)
 {
     document.add(new NumericField(FieldName.HasResume).setIntValue(content.Resume == null || content.Resume.IsEmpty ? 0 : 1));
 }
示例#24
0
 protected override bool ShouldVisitSourceNode(MemberContent memberContent, IGraphNode targetNode)
 {
     return((ShouldVisit?.Invoke(memberContent, targetNode) ?? true) && base.ShouldVisitSourceNode(memberContent, targetNode));
 }
示例#25
0
 void IContentHandler.AddContent(Document document, MemberContent content)
 {
     AddContent(document, content.Candidate.Industries == null ? null : from i in content.Candidate.Industries select i.Id);
 }
 void IContentHandler.AddContent(Document document, MemberContent content)
 {
     document.add(new NumericField(FieldName.IsContactable).setIntValue(CanContact(content.Member) ? 1 : 0));
 }
示例#27
0
        public void VisaStatusFilterTest()
        {
            // Create content.

            var citizen = Guid.NewGuid();
            var content = new MemberContent {
                Member = new Member {
                    Id = citizen
                }, Candidate = new Candidate {
                    VisaStatus = VisaStatus.Citizen
                }
            };

            IndexContent(content);

            var restrictedWorkVisa = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = restrictedWorkVisa
                }, Candidate = new Candidate {
                    VisaStatus = VisaStatus.RestrictedWorkVisa
                }
            };
            IndexContent(content);

            var notApplicable = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = notApplicable
                }, Candidate = new Candidate {
                    VisaStatus = VisaStatus.NotApplicable
                }
            };
            IndexContent(content);

            var none = Guid.NewGuid();

            content = new MemberContent {
                Member = new Member {
                    Id = none
                }, Candidate = new Candidate()
            };
            IndexContent(content);

            // Search without filter.

            var memberQuery = new MemberSearchQuery();
            var results     = Search(memberQuery, 0, 10);

            Assert.IsTrue(new[] { citizen, restrictedWorkVisa, notApplicable, none }.CollectionEqual(results.MemberIds));

            // Not applicable.

            memberQuery = new MemberSearchQuery {
                VisaStatusList = new[] { VisaStatus.NotApplicable }
            };
            results = Search(memberQuery, 0, 10);
            Assert.IsTrue(new[] { notApplicable }.CollectionEqual(results.MemberIds));

            // RestrictedWorkVisa.

            memberQuery = new MemberSearchQuery {
                VisaStatusList = new[] { VisaStatus.RestrictedWorkVisa }
            };
            results = Search(memberQuery, 0, 10);
            Assert.IsTrue(new[] { restrictedWorkVisa }.CollectionEqual(results.MemberIds));

            // Citizen, which includes everyone with none.

            memberQuery = new MemberSearchQuery {
                VisaStatusList = new[] { VisaStatus.Citizen }
            };
            results = Search(memberQuery, 0, 10);
            Assert.IsTrue(new[] { citizen, notApplicable, none }.CollectionEqual(results.MemberIds));

            // RestrictedWorkVisa and citizen.

            memberQuery = new MemberSearchQuery {
                VisaStatusList = new[] { VisaStatus.RestrictedWorkVisa, VisaStatus.Citizen }
            };
            results = Search(memberQuery, 0, 10);
            Assert.IsTrue(new[] { restrictedWorkVisa, citizen, notApplicable, none }.CollectionEqual(results.MemberIds));
        }
示例#28
0
 /// <summary>
 /// Indicates whether the linker should visit the given source node.
 /// </summary>
 /// <param name="memberContent">The member content referencing the source node to evaluate.</param>
 /// <param name="targetNode">The source node to evaluate. Can be the node holding the <paramref name="memberContent"/>, or one of its target node if this node contains a reference.</param>
 /// <returns>True if the node should be visited, false otherwise.</returns>
 protected virtual bool ShouldVisitSourceNode(MemberContent memberContent, IGraphNode targetNode)
 {
     return(true);
 }
示例#29
0
 void IContentHandler.AddContent(Document document, MemberContent content)
 {
     AddContent(document, content.Candidate.DesiredJobTypes);
 }
示例#30
0
 private void IndexContent(MemberContent content)
 {
     _indexer.IndexContent(_indexWriter, content, true);
 }