/// <summary> /// Initializes a new instance of the <see cref="SpaceCategoryModel"/> class. /// </summary> /// <param name="label">The label.</param> /// <param name="documents">The documents.</param> public SpaceCategoryModel(SpaceLabel label, IEnumerable <SpaceDocumentModel> documents) { name = label.name; Length = 0; foreach (SpaceDocumentModel doc in documents) { terms.MergeDictionary(doc.GetTerms(true, true)); Length += doc.Length; Children.Add(doc); } if (SpaceModelConstructor.spaceSettings.DoMaintainWordIndex) { Words = new Int32[Length]; } if (SpaceModelConstructor.spaceSettings.DoMaintainWordIndex) { Int32 c = 0; foreach (SpaceDocumentModel doc in documents) { if (doc.Words != null) { foreach (Int32 w in doc.Words) { Words[c] = w; c++; } } } } }
/// <summary> /// Adds the label if not already declared within the context /// </summary> /// <param name="text">The text.</param> /// <param name="context">The context.</param> public void AddLabel(String text, SpaceModel context) { if (!context.labels.Any(x => x.name == text)) { SpaceLabel label = new SpaceLabel(); label.name = text; context.labels.Add(label); } }
/// <summary> /// Sets the label. /// </summary> /// <param name="model">The model.</param> /// <param name="label">The label.</param> /// <param name="space">The space.</param> public static void SetLabel(this SpaceDocumentModel model, SpaceLabel label, SpaceModel space) { space.LabelToDocumentLinks.Add(label, model, 1.0); var ms = model.Children.ToList(); while (ms.Any()) { List <SpaceDocumentModel> nestMs = new List <SpaceDocumentModel>(); foreach (var m in ms) { nestMs.AddRange(m.Children); space.LabelToDocumentLinks.Add(label, m, 1.0); } ms = nestMs; } }