internal static Tuple <PositionalPostingList, PositionalPostingList> PositionalIntersect(PositionalPostingList ppList1, PositionalPostingList ppList2, int k)
        {
            PositionalPostingList      nPPList1 = new PositionalPostingList(ppList1.Word);
            PositionalPostingList      nPPList2 = new PositionalPostingList(ppList2.Word);
            List <DocWordPositionList> p1 = ppList1.DocWordPositions;
            List <DocWordPositionList> p2 = ppList2.DocWordPositions;
            int i = 0, j = 0;

            while (i < p1.Count && j < p2.Count)
            {
                if (p1.ElementAt(i).DocId == p2.ElementAt(i).DocId)
                {
                    Tuple <DocWordPositionList, DocWordPositionList> result = DocWordPositionList.PositionalIntersect(p1.ElementAt(i), p2.ElementAt(i), k);
                    nPPList1.AddDoc(result.Item1);
                    nPPList2.AddDoc(result.Item2);
                    i++;
                    j++;
                }
                else if (p1.ElementAt(i).DocId < p2.ElementAt(i).DocId)
                {
                    i++;
                }
                else
                {
                    j++;
                }
            }
            return(new Tuple <PositionalPostingList, PositionalPostingList>(nPPList1, nPPList2));
        }
 public void AddDoc(DocWordPositionList doc)
 {
     DocWordPositions.Add(doc);
 }
Esempio n. 3
0
        internal static Tuple <DocWordPositionList, DocWordPositionList> PositionalIntersect(DocWordPositionList dwp1, DocWordPositionList dwp2, int k)
        {
            Tuple <PList, PList> result = PList.PositionalIntersect(dwp1.PostingList, dwp2.PostingList, k);

            return(new Tuple <DocWordPositionList, DocWordPositionList>(new DocWordPositionList(dwp1.DocId, result.Item1), new DocWordPositionList(dwp2.DocId, result.Item2)));
        }