protected override int ProcessPair(PositionLine entity1, PositionLine entity2) { var p = 0; TripletMini[] array; if (_tripletsInMemory.TryGetValue(entity1.EntityName + entity2.EntityName, out array)) { foreach (var t in array) { if (ProcessTriplet(t.Id, entity1, entity2, _wikiReader)) { p++; } } } if (_tripletsInMemory.TryGetValue(entity2.EntityName + entity1.EntityName, out array)) { foreach (var t in array) { if (ProcessTriplet(t.Id, entity2, entity1, _wikiReader)) { p++; } } } return(p); }
protected override int ProcessPair(PositionLine entity1, PositionLine entity2) { var p = 0; foreach (var t in _triplets .Find(t => t.ObjectWikiName == entity1.EntityName && t.SubjectWikiName == entity2.EntityName) .ToEnumerable()) { ProcessTriplet(t.Id, entity1, entity2, _wikiReader); p++; } foreach (var t in _triplets .Find(t => t.ObjectWikiName == entity2.EntityName && t.SubjectWikiName == entity1.EntityName) .ToEnumerable()) { ProcessTriplet(t.Id, entity2, entity1, _wikiReader); p++; } return(p); }
protected bool ProcessTriplet(ObjectId id, PositionLine object_, PositionLine subject, IWikidumpReader reader) { var position = new AnotherArticlePosition { ArticleTitle = object_.WikiTitle, ArticleId = object_.PageId, ObjectPosition = object_.ToPosition(), SubjectPosition = subject.ToPosition() }; var text = reader.ExtractArticleText(object_.PageId); if (text == null) { return(false); } var startPosition = object_.Start < subject.Start ? object_.Start : subject.Start; var endPosition = object_.End > subject.End ? object_.End : subject.End; int newStart; int newEnd; position.Text = TextHelper.ExtractTextWithSentenceWindow(text, startPosition, endPosition, out newStart, out newEnd); // do not save with line break if (position.Text.Contains('\n') || position.Text.Contains('\r')) { return(false); } position.Start = newStart; position.End = newEnd; position.Distance = newEnd - newStart; _saver.Save(id, position); return(true); }
protected abstract int ProcessPair(PositionLine entity1, PositionLine entity2);
private PositionLine<Currency> findIn(IList<PositionLine<Currency>> list_, Currency ccy_, bool createIfNotThere_ = true) { var item = list_.FirstOrDefault(x => x.Instrument.Code == ccy_.Code); if (item == null && createIfNotThere_) { item = new PositionLine<Currency>() { Instrument = ccy_ }; list_.Add(item); } return item; }