Exemplo n.º 1
0
 public TfFile GetNext()
 {
     tf = 0;
     if (Last[0] != null && Last[1] != null)
     {
         min = Last[0].IdDoc < Last[1].IdDoc ? Last[0].IdDoc : Last[1].IdDoc;
     }
     else if (Last[0] != null || Last[1] != null)
     {
         min = Last[0] != null ? Last[0].IdDoc : Last[1].IdDoc;
     }
     else
     {
         return(null);
     }
     for (int i = 0; i < 2; i++)
     {
         if (Last[i] != null && Last[i].IdDoc == min)
         {
             tf     += Last[i].Tf;
             Last[i] = Children[i].GetNext();
         }
     }
     return(TfFile.Creator(min, tf));
 }
Exemplo n.º 2
0
        public List <int> Search(string Zapros, out List <List <Tuple <int, int> > > ToCreateSniped)
        {
            IParseTermTF Term = Parser.parseTF(Zapros);

            TfFile[] TopBuf = new TfFile[TopZap];
            TfFile   Tmp;

            ToCreateSniped = new List <List <Tuple <int, int> > >();
            List <Tuple <int, int> >[] PInfo = new List <Tuple <int, int> > [TopZap];
            List <Tuple <int, int> >   PInfoTMP;

            for (int i = 0; i < TopZap; i++)
            {
                TopBuf[i] = null;
            }
            for (;;)
            {
                Tmp      = Term.GetNext();
                PInfoTMP = Term.GetInfo();
                if (Tmp == null)
                {
                    break;
                }
                if (TopBuf[TopZap - 1] == null || TopBuf[TopZap - 1].Tf < Tmp.Tf)
                {
                    int i = 0;
                    for (i = TopZap - 2; i >= 0; i--)
                    {
                        if (TopBuf[i] != null && Tmp.Tf < TopBuf[i].Tf)
                        {
                            PInfo[i + 1]  = PInfoTMP;
                            TopBuf[i + 1] = Tmp;
                            break;
                        }
                        TopBuf[i + 1] = TopBuf[i];
                        PInfo[i + 1]  = PInfoTMP;
                    }
                    if (i < 0)
                    {
                        TopBuf[0] = Tmp;
                        PInfo[0]  = PInfoTMP;
                    }
                }
            }
            List <int> ret = new List <int>(TopZap);

            for (int i = 0; i < TopZap; i++)
            {
                if (TopBuf[i] == null)
                {
                    break;
                }
                ret.Add(TopBuf[i].IdDoc);
            }
            return(ret);
        }
Exemplo n.º 3
0
 public TfFile GetNext()
 {
     if (pos < Doc.Count)
     {
         TfFile ret = Doc[pos];
         pos++;
         return(ret);
     }
     return(null);
 }