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); }
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))); }