/// <summary> /// Поискать эквивалентные термины /// </summary> /// <param name="termin">термин</param> /// <return>список эквивалентных терминов Termin или null</return> public List <Termin> FindTerminsByTermin(Termin termin) { List <Termin> res = null; foreach (string v in termin.GetHashVariants()) { List <Termin> vars = this._FindInTree(v, termin.Lang); if (vars == null) { continue; } foreach (Termin t in vars) { if (t.IsEqual(termin)) { if (res == null) { res = new List <Termin>(); } if (!res.Contains(t)) { res.Add(t); } } } } return(res); }
/// <summary> /// Переиндексировать термин (если после добавления у него что-либо поменялось) /// </summary> /// <param name="t">термин для переиндексации</param> public void Reindex(Termin t) { if (t == null) { return; } if (t.Terms.Count > 20) { } if (t.AcronymSmart != null) { this.AddToHash1((short)t.AcronymSmart[0], t); } if (t.Abridges != null) { foreach (Termin.Abridge a in t.Abridges) { if (a.Parts[0].Value.Length == 1) { this.AddToHash1((short)a.Parts[0].Value[0], t); } } } foreach (string v in t.GetHashVariants()) { this._AddToTree(v, t); } if (t.AdditionalVars != null) { foreach (Termin av in t.AdditionalVars) { av.IgnoreTermsOrder = t.IgnoreTermsOrder; foreach (string v in av.GetHashVariants()) { this._AddToTree(v, t); } } } }
public void Remove(Termin t) { foreach (string v in t.GetHashVariants()) { this._RemoveFromTree(v, t); } foreach (List <Termin> li in m_Hash1.Values) { foreach (Termin tt in li) { if (tt == t) { li.Remove(tt); break; } } } int i = Termins.IndexOf(t); if (i >= 0) { Termins.RemoveAt(i); } }