public AnalyzeContext() { _ID = 0; _TargetRelationTypeID = 0; _TargetRelationDependentTypeIDs = new List <int>(); _AnalyzeRelationTimeFactor = 0; _AnalyzeRelationTypeFactor = 1; _AnalyzeRelationCountFactor = 0.1; _FinalScoreNormalizationMergeCountFactor = 0.3; _FinalScoreNormalizationMergeValueFactor = 0.8; _FinalScoreDevideByPathLength = true; _Relations = new List <AnalyzeConfigRelation>(); _SelectionCounts = new List <AnalyzeConfigSelectionCount>(); _Recommends = new List <AnalyzeConfigLimitFilterItem>(); ConsiderRecommendsAsFilter = false; TimeDependence = AnalyzeConfigTimeDependence.Independent; MergeMode = AnalyzeConfigPathMergeMode.Maximum; }
protected static AnalyzeContext _create_analyze_context(AnalyzeContextType contextType) { List <AnalyzeConfigLimitFilterItem> recommends = new List <AnalyzeConfigLimitFilterItem>(); List <AnalyzeConfigSelectionCount> selectionCounts = new List <AnalyzeConfigSelectionCount>(); List <AnalyzeConfigRelation> relations = new List <AnalyzeConfigRelation>(); AnalyzeConfigTimeDependence timeDependence = AnalyzeConfigTimeDependence.Independent; double timeFactor = 0; int targetRelationTypeId = 0; List <int> targetRelationDependentTypeIDs = new List <int>(); switch (contextType) { case AnalyzeContextType.Node2Node: recommends.Add(new AnalyzeConfigLimitFilterItem() { EntityTypeID = (int)AnalyzeEntityType.Node, RecommendedEntityTypeID = (int)AnalyzeEntityType.Node }); selectionCounts.Add(new AnalyzeConfigSelectionCount() { EntityTypeID = (int)AnalyzeEntityType.Node, SelectionCount = 100 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Expert, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Expert + 1, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Friend, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Friend + 1, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.IsA, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.IsA + 1, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.ItemVisit, Value = 0.15 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.ItemVisit + 1, Value = 0.15 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeCreator, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeCreator + 1, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeLike, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeLike + 1, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeMember, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeMember + 1, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeRelation, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeRelation + 1, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Related, Value = 0.6 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Related + 1, Value = 0.6 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.TaggedItem, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.TaggedItem + 1, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.UsedAsTag, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.UsedAsTag + 1, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.WikiChange, Value = 0.3 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.WikiChange + 1, Value = 0.3 }); timeDependence = AnalyzeConfigTimeDependence.Independent; timeFactor = 0; break; case AnalyzeContextType.Node2User: recommends.Add(new AnalyzeConfigLimitFilterItem() { EntityTypeID = (int)AnalyzeEntityType.Node, RecommendedEntityTypeID = (int)AnalyzeEntityType.User }); selectionCounts.Add(new AnalyzeConfigSelectionCount() { EntityTypeID = (int)AnalyzeEntityType.User, SelectionCount = 100 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Expert, Value = 0.6 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Expert + 1, Value = 0.6 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Friend, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Friend + 1, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.IsA, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.IsA + 1, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.ItemVisit, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.ItemVisit + 1, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeCreator, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeCreator + 1, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeLike, Value = 0.5 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeLike + 1, Value = 0.5 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeMember, Value = 0.6 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeMember + 1, Value = 0.6 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeRelation, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeRelation + 1, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Related, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Related + 1, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.TaggedItem, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.TaggedItem + 1, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.UsedAsTag, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.UsedAsTag + 1, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.WikiChange, Value = 0.7 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.WikiChange + 1, Value = 0.7 }); timeDependence = AnalyzeConfigTimeDependence.HighlyDependent; timeFactor = 2; break; case AnalyzeContextType.User2User: recommends.Add(new AnalyzeConfigLimitFilterItem() { EntityTypeID = (int)AnalyzeEntityType.User, RecommendedEntityTypeID = (int)AnalyzeEntityType.User }); selectionCounts.Add(new AnalyzeConfigSelectionCount() { EntityTypeID = (int)AnalyzeEntityType.User, SelectionCount = 100 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Expert, Value = 0.5 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Expert + 1, Value = 0.5 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Friend, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Friend + 1, Value = 0.8 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.IsA, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.IsA + 1, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.ItemVisit, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.ItemVisit + 1, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeCreator, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeCreator + 1, Value = 0.2 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeLike, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeLike + 1, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeMember, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeMember + 1, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeRelation, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.NodeRelation + 1, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Related, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.Related + 1, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.TaggedItem, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.TaggedItem + 1, Value = 0 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.UsedAsTag, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.UsedAsTag + 1, Value = 0.4 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.WikiChange, Value = 0.5 }); relations.Add(new AnalyzeConfigRelation() { TypeID = (int)AnalyzeRelationType.WikiChange + 1, Value = 0.5 }); timeDependence = AnalyzeConfigTimeDependence.LowlyDependent; timeFactor = 1; targetRelationTypeId = (int)AnalyzeRelationType.Friend; targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.ItemVisit); targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.ItemVisit + 1); targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.TaggedItem); targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.TaggedItem + 1); targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.UsedAsTag); targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.UsedAsTag + 1); break; } return(new AnalyzeContext() { ID = (int)contextType, Relations = relations, SelectionCounts = selectionCounts, ConsiderRecommendsAsFilter = false, Recommends = recommends, TargetRelationTypeID = targetRelationTypeId, TargetRelationDependentTypeIDs = targetRelationDependentTypeIDs, TimeDependence = timeDependence, AnalyzeRelationTimeFactor = timeFactor }); }