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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 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;
    }